是VB';s与C#'相同;s变量?
这是一个小疑问:在VB上,我可以使用Dim声明变量。在C#中,我可以使用是VB';s与C#'相同;s变量?,c#,vb.net,C#,Vb.net,这是一个小疑问:在VB上,我可以使用Dim声明变量。在C#中,我可以使用var声明。我更熟悉C#的复杂性,我知道var使用类型推断来确定变量的类型。但我不确定Dim是做什么的 我看起来是这样的,但它没有比较两个关键字。如果有区别,有人能告诉我是哪一种吗?它们不一样Dim简单地表示下面是一个变量声明 例如,这两者是等效的: Dim x As String=“foo” string x=“foo” 在C#中,var表示编译器根据用法(初始化)推断变量声明的类型。在VB中,只要省略声明的类型就可以
var
声明。我更熟悉C#的复杂性,我知道var
使用类型推断来确定变量的类型。但我不确定Dim是做什么的
我看起来是这样的,但它没有比较两个关键字。如果有区别,有人能告诉我是哪一种吗?它们不一样
Dim x As String=“foo”
string x=“foo”
在C#
中,var表示编译器根据用法(初始化)推断变量声明的类型。在VB中,只要省略声明的类型就可以实现同样的效果。但是,这也需要激活选项严格
和选项推断
:
Dim x=“bar”编译器推断x=字符串的类型
var x=“bar”/。
有
对于c#var:
…[var]是一个新的关键字,意思是,
“我想声明一个变量,但我
懒得写出它的类型。”
一种看待VB强大功能的方法
Dim操作员就是说
Dim的意思是“我想申报
一个变量,但我不能告诉你太多
关于它的行为直到
后来。”
Dim允许您执行实际的后期绑定,而在C#(今天)中,您使用反射执行后期绑定
Dim
表示“维度”,在VB.Net中用于声明变量。它基本上意味着“保留一些/足够的空间来容纳一个a型的”。数据类型稍后出现;通常在同一条线上
正如您所提到的,C#中的
var
实际上是一种快捷方式,告诉编译器根据首先分配的值推断数据类型。var关键字是由变量中分配的数据类型专门键入的。
但是dim是不变量,可以用于任何类型。这取决于您在vb.net中编写的代码
dim x = 1
那么它和c#var是一样的
或者你可以写
dim x as integer = 1
这和c#一样
从vb.net 9.0开始,您不需要使用带有initialize语句的类型
这取决于是否指定了。通常情况下,以下各项是等效的:
'VB.Net
暗myVar
Dim myString=“你好,世界!”
将myString2暗显为String=“你好,世界!”
/C#
对象myVar;
objectmystring=“你好,世界!”//注意类型是object,而不是string!
string myString2=“你好,世界!”;
但是,如果启用了选项推断
,当变量在同一行上初始化时,Dim
变得更像var
:
'VB.Net
选项推断
暗myVar
Dim myString=“你好!”
/C#
对象myVar;
var myString=“你好!”//或者等效的:string myString=“Hello!”;
请注意,这可能会导致一些混淆,因为在声明点突然初始化变量意味着与稍后初始化变量不同:
'VB.Net
选项推断
暗myVar1
myVar1=10
Dim myVar2=10
myVar1=新的MyClass()'合法
myVar2=新建MyClass()'非法!-“MyClass”类型的值无法转换为“Integer”
这可以通过启用来解决,启用(除其他外)强制在声明时为所有变量指定一个类型(隐式或非隐式)。VB中的
Dim
本身不做任何事情,它只是一个关键字,意味着语句的其余部分与声明变量有关。它是一个BASIC
关键字,来自时间的迷雾,意思是“维度”,当你不能声明普通变量,但你必须声明数组的“维度”
如果在你的脑海中,你忽略了
暗淡的部分
,比较剩下的部分,你会发现VB和C非常相似,只是C做得不对(你可以猜到我是用哪种语言长大的),并且像C一样,把类型放在第一位(或者使用var
)接下来是变量的名称。除了您已经遇到的问题之外,还需要进一步澄清,请研究早期绑定与晚期绑定。这就是两者的核心区别。使用选项,推断开启
代码,例如Dim myVar1
不再工作:推断开启
和严格关闭
是相互排斥的(除非他们在VB10中改变了这一点)。@Konrad:我很确定这不是真的。明确指出,选项Strict
可以是打开
或关闭
。而且,我刚刚测试过,它工作正常。那我一定是记性不好。奇怪……我很肯定编译器会抱怨如果使用expert
时没有Strict
;是的,你明白了!var告诉编译器您想要声明一个特定的类型,请记住,C#是特定于类型的,不像vb那样是类型/对象解释的“远离vb”
int x = 1;