如何在c#中转换TryCast?

时间:2010-07-28 07:30:49

标签: c# asp.net

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

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

我在c#中使用AS运算符尝试了它,但它无效。

提前谢谢你。

3 个答案:

答案 0 :(得分:58)

您可以使用as进行投射;这不会抛出任何异常,但如果无法进行强制转换,则返回null(就像TryCast):

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

答案 1 :(得分:7)

as operator实际上是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 operator

答案 2 :(得分:3)

简单地施展它:

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

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

如果演员表未成功,as运算符将返回null:

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

所以,这将更接近TryCast