C#中“var”和“object”的区别

vartypes是否等价于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将是Widgettypes,而不是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对象一样。

一个区别是拳击和拆箱与对象。