这是一个小问题:在VB上,我可以使用Dim来声明变量.在C#中,我可以声明然后使用var.我更熟悉C#的复杂性,我知道var使用类型推断来确定变量的类型.但我不知道’Dim’是什么.
我似乎在this question,但它并不比较这两个关键字.如果有区别,有人可以告诉我哪个?
这取决于是否指定了
Option Infer
.通常,以下是等效的:
'VB.Net Dim myVar Dim myString = "Hello world!" Dim myString2 As String = "Hello world!"
//C# object myVar; object myString = "Hello world!"; //Notice type is object,*not* string! string myString2 = "Hello world!";
但是,启用了Option Infer,当变量在同一行上初始化时,Dim变得更像var.
'VB.Net Option Infer On Dim myVar Dim myString = "Hello!"
//C# object myVar; var myString = "Hello!"; //Or the equivalent: string myString = "Hello!";
请注意,这可能会导致一些混淆,因为在声明点突然初始化一个变量意味着与以后初始化不同的东西:
'VB.Net Option Infer On Dim myVar1 myVar1 = 10 Dim myVar2 = 10 myVar1 = New MyClass() 'Legal myVar2 = New MyClass() 'Illegal! - Value of type 'MyClass' cannot be converted to 'Integer'
这可以通过启用Option Strict
来进行修复,其中(除其他外)强制所有变量在声明时被赋予类型(隐式或不显式).