我用 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 类型的目的是什么。这是某种我不知道的转换语法吗?这里发生了什么使它起作用,而直接转换却不起作用?
最佳答案
对于初学者来说,是,该语法是一个显式转换(有时称为 C 风格转换)。
您在这里需要它的原因很简单。 Create
方法实际上继承自WebRequest
类,它返回一个WebRequest
(不是HttpWebRequest
)对象。注意它在 HttpWebRequest
中不存在和 Create
的签名
然后,分配给 HttpWebRequest
变量需要向下转换,这永远不能保证安全,因此您必须显式转换它。
请注意,以下代码也可以编译。
WebRequest Request = HttpWebRequest.Create("www.google.com");
关于使用 HttpWebRequest.Create 时的 C# 与 VB 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29218348/