加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB的Dim与C#的var相同吗?

发布时间:2020-12-17 00:06:51 所属栏目:大数据 来源:网络整理
导读:这是一个小问题:在VB上,我可以使用Dim来声明变量.在C#中,我可以声明然后使用var.我更熟悉C#的复杂性,我知道var使用类型推断来确定变量的类型.但我不知道’Dim’是什么. 我似乎在this question,但它并不比较这两个关键字.如果有区别,有人可以告诉我哪个? 这
这是一个小问题:在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来进行修复,其中(除其他外)强制所有变量在声明时被赋予类型(隐式或不显式).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读