gpt4 book ai didi

C# 与 VB.Net - 隐式转换

转载 作者:太空宇宙 更新时间:2023-11-03 21:15:36 26 4
gpt4 key购买 nike

这个问题是关于 VB.Net 和 C# 中的隐式转换。以下 C# 代码无法编译:

class Program
{
static void Foo(string s)
{
Console.WriteLine(s);
}

static void Main(string[] args)
{
Foo(3); // Cannot convert from int to string
}
}

原因是 Foo 需要一个字符串类型的参数,但它给定的是一个 int。一种解决方案是将 Foo(3) 替换为 Foo(3.ToString())。很好。

现在,在 VB.Net 中编写相同的代码:

Module Module1
Sub Foo(s As String)
Console.WriteLine(s)
End Sub

Sub Main()
Foo(5)
End Sub
End Module

编译和运行都很好!

问题:为什么 VB.Net 允许这样做,VB.Net 和 C# 之间是否存在一些根本区别?

最佳答案

编程语言会做出不同的权衡。使用 Strict=Off 的 VB.NET 非常宽松。这是出于历史兼容性原因。

几十年前,编程语言设计者认为这种行为对初学者很有帮助。现在我们知道,这种松懈的行为对于程序的正确性和开发速度来说是可怕的。

JavaScript 也有同样的问题,但更糟。

使用严格的语义。

关于C# 与 VB.Net - 隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34561465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com