C#中“var”和“object”的区别
var
types是否等价于VB中的Variant
? 当object
可以接受任何数据types时,这两者有什么区别?
从Visual C#3.0开始,在方法范围声明的variables可以有一个隐式typesvar
。 一个隐式types的局部variables是强types的,就像你自己声明了types一样,但是编译器决定了types。 以下两个声明在function上是等价的:
var i = 10; //implicitly typed int i = 10; //explicitly typed
var不是对象
你一定要读这个: C#3.0 – Var不是对象
其他的答案是正确的,我只想补充一点,你可以把你的光标放在'var'关键字上,然后按F12跳到推断的types声明。
Nope – var
只是意味着让编译器从用来赋值给variables的expression式中推断出types。
这只是语法糖让你less打字 – 尝试做一个types为“ var
”的方法参数,看看会发生什么:]
所以,如果你有一个expression式:
var x = new Widget();
x
将是Widget
types,而不是object
。
添加到post。
Parent p = new Parent(); Child c = new Child();//Child class derives Parent class Parent p1 = new Child();
使用上述方法,只能访问父(p1)属性,尽pipe它包含子对象引用。
var p= new Parent(); var c= new Child(); var p1 = new Child();
当使用“var”而不是类时,您可以访问父类和子类的属性。 它的行为就像为子类创build对象一样。
一个区别是拳击和拆箱与对象。