类型-C#中“ var”和“ object”之间的区别

var类型是否等同于VB中的Variant类型? 当object可以接受任何数据类型时,两者之间有什么区别?

user184805 asked 2020-08-01T03:14:09Z
6个解决方案
52 votes

从Visual C#3.0开始,在方法范围内声明的变量可以具有隐式类型var。对隐式类型的局部变量进行强类型输入,就像您自己声明了该类型一样,但是编译器确定该类型。 以下是i的两个声明在功能上等效:

var i = 10; //implicitly typed
int i = 10; //explicitly typed

var不是对象

您绝对应该阅读以下内容:C#3.0-Var不是对象

Tarik answered 2020-08-01T03:25:51Z
12 votes

Well documented from codeproject

欲了解更多详情,请看 [http://www.codeproject.com/Tips/460614/Difference-between-var-and-dynamic-in-Csharp]

Devendra Patel answered 2020-08-01T03:26:11Z
6 votes

其他答案都正确,我想补充一下,您实际上可以将光标放在'var'关键字上,然后按F12键跳转到推断的类型声明。

Mike Valenty answered 2020-08-01T03:26:32Z
6 votes

否-x只是意味着您要让编译器从用于为变量赋值的表达式中推断类型。

只是语法糖,您可以减少键入的内容-尝试创建类型为“ x”的方法参数,然后看看会发生什么:]

因此,如果您有一个类似的表达式:

var x = new Widget();

x将为Widget,而不是object

shA.t answered 2020-08-01T03:27:05Z
0 votes

添加到帖子中。

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”代替类时,您可以访问父类和子类属性。 它的行为就像为子类创建对象。

Anand Ramachandran answered 2020-08-01T03:27:34Z
-1 votes

一个区别是与对象进行装箱和装箱。

Masoud answered 2020-08-01T03:27:54Z
translate from https://stackoverflow.com:/questions/1552881/difference-between-var-and-object-in-c-sharp