使用HttpWebRequest.Create时的C#vs VB语法

Mat*_*ttB 5 c# vb.net

我已经在VB中编写了很长一段时间,我也可以在C#和F#中做很多事情,但是VB和C#之间的一个语法差异继续让我失望.我是谷歌这个,但我不确定该怎么称呼它.请考虑以下示例:

在visual basic中我会这样做:

Dim Request As HttpWebRequest = HttpWebRequest.Create("www.google.com")
Run Code Online (Sandbox Code Playgroud)

但是,当我做出似乎是对C#的"逻辑"转换时:

HttpWebRequest Request = HttpWebRequest.Create("www.google.com");
Run Code Online (Sandbox Code Playgroud)

我得到隐式类型转换错误.看了一些其他代码后,我意识到这似乎是正确的方法:

HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create("www.google.com");
Run Code Online (Sandbox Code Playgroud)

但是我不清楚在括号中另外提到HttpWebRequest类型的目的是什么.这是某种我不知道的演员语法吗?在这里发生了什么使得这项工作,而不是直接转换?

Bra*_*NET 5

对于初学者,是的,该语法是一个显式转换(有时称为C风格转换).

你需要它的原因很简单.该Create方法实际上是从WebRequest类继承的,它返回一个WebRequest(非HttpWebRequest)对象.注意它缺乏存在HttpWebRequest和签名Create

分配给HttpWebRequest变量然后需要向下转换,这绝不保证是安全的,因此您必须明确地转换它.

请注意,下面的代码将编译.

WebRequest Request = HttpWebRequest.Create("www.google.com");
Run Code Online (Sandbox Code Playgroud)