var
类型是否等同于VB中的Variant
?当object
可以接受任何数据类型时,这两者之间有什么区别?
答案 0 :(得分:51)
从Visual C#3.0开始,在方法范围声明的变量可以具有隐式类型var
。隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定了类型。以下两个i
声明在功能上是等效的:
var i = 10; //implicitly typed
int i = 10; //explicitly typed
var不是对象
你一定要读这个:C# 3.0 - Var Isn't Object
答案 1 :(得分:12)
答案 2 :(得分:6)
Nope - var
只是意味着你让编译器从用于为变量赋值的表达式中推断出类型。
让你减少打字的语法糖 - 尝试制作类型为“var
”的方法参数,看看会发生什么:]
所以如果你有一个表达式:
var x = new Widget();
x
的类型为Widget
,而不是object
。
答案 3 :(得分:6)
其他答案是正确的,我只想补充一点,你实际上可以把光标放在'var'关键字上,点击F12跳转到推断的类型声明。
答案 4 :(得分:0)
添加到帖子中。
Parent p = new Parent();
Child c = new Child();//Child class derives Parent class
Parent p1 = new Child();
上面你只能访问父(p1)属性,尽管它拥有子对象引用。
var p= new Parent();
var c= new Child();
var p1 = new Child();
使用' var'而不是类,您可以访问父类和子类属性。它的行为类似于为子类创建对象。
答案 5 :(得分:-1)
一个区别是Boxing和Unboxing with Object。