【发布时间】:2015-05-26 22:06:23
【问题描述】:
我在 VB 中编码已经有一段时间了,我也可以在 C# 和 F# 中做很多事情,但是 VB 和 C# 之间的一个语法差异仍然让我感到厌烦。我会用谷歌搜索这个,但我不知道该怎么称呼它。考虑以下示例:
在 Visual Basic 中我会这样做:
Dim Request As HttpWebRequest = HttpWebRequest.Create("www.google.com")
但是,当我对 C# 进行看似“逻辑”的转换时:
HttpWebRequest Request = HttpWebRequest.Create("www.google.com");
我得到隐式类型转换错误。在查看了其他一些代码后,我意识到这似乎是正确的方法:
HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create("www.google.com");
但我并不清楚括号中额外提及 HttpWebRequest 类型的目的是什么。这是我不知道的某种类型的转换语法吗?这里发生了什么使这项工作有效,而直接转换无效?
【问题讨论】:
-
避免这种情况的一种简单方法是改用
var。即var Request = HttpWebRequest.Create("www.google.com"); -
不能使用 var - 我需要 HttpWebRequest 对象来设置一些属性 - 我不能设置 .Accept 与使用 var 时返回的 WebRequest 对象。不过信息很好。
-
VB.net 为您进行转换,从某种意义上说,您从两种方法中都获得了 WebRequest,只是 C# 不会为您进行转换,这是您的责任。大多数情况下我宁愿使用
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com") -
相关:C# HttpWebRequest vs WebRequest(即它不是真的
HttpWebRequest)。