這個問題關於VB.Net和C#中的隱式轉換。 下面的C#代碼不編譯:C#vs VB.Net - 隱式轉換
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.ToString())
替換Foo(3)
。精細。
現在,同樣的代碼在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#在這裏之間的一些根本的區別?
It * only *在VB中使用Option Strict Off編譯「很好」 – Plutonix
並且您應該保持開啓狀態 – Steve
一旦您在vb中啓動「Strict On」,它將被視爲錯誤。 –