如何在c#中转换TryCast?

如何将以下vb代码转换为c#

Dim request As HttpWebRequest = TryCast(WebRequest.Create(address), HttpWebRequest) 

我在c#中使用AS运算符尝试了它,但它不起作用。

先感谢您。

你可以使用as ; 这不会抛出任何exception,但如果无法进行TryCast则返回null (就像TryCast一样):

 HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; 

as运算符实际上是C#等价物:

 HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; Debug.Assert(request != null); // request will be null if the cast fails 

但是,常规演员可能更可取:

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address); 

当使用特定的URI方案调用时, WebRequest.Create应始终生成HttpWebRequest。 如果在施法失败时没有任何有用的事情,那么就没有必要防御性地施放变量。 如果您不关心使用的协议,那么您的request变量应该是WebRequest类型(但是您无法检查HTTP状态代码)。

要在C#中完成有关强制转换和类型检查的图片,您可能还需要阅读is运算符 。

简单地投下它:

 HttpRequest request = (HttpRequest)WebRequest.Create(address); 

如果演员表不成功,这将抛出exception。

如果转换不成功, as运算符将返回null:

 HttpRequest request = WebRequest.Create(address) as HttpRequest; // if cast failed, request == null 

所以,这将更接近TryCast

绝对是您正在寻找的运营商。 你遇到了什么错误?