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

标签 c# vb.net

我用 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/

相关文章:

c# - LINQ:如何使用 IQueryable() 选择特定列

c# - JArray - 按键名搜索对象

c# - 循环遍历 GridView 行并检查复选框控件

vb.net - 将 GUID 转换为数字等效项

.net - 我如何在 UltraWinGrid 中设置自定义字体?

c# - LINQ Count 和 Max 一起使用

c# - 委托(delegate)不变性和赋值运算符

vb.net - 我应该将全局常量放在 .NET 库中的什么位置?

vb.net - .NET Designer 在继承的控件中将隐藏属性设置为只读

vb.net - 在 TeamCity 中构建 Web 部署项目时出现 "Incorrect Format"引用错误