如何将以下vb代码转换为c#
Dim request As HttpWebRequest = TryCast(WebRequest.Create(address), HttpWebRequest)
我在c#中使用AS运算符尝试了它,但它无效。
提前谢谢你。
答案 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
。