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

时间:2009-10-12 05:34:24

标签: c# types

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

6 个答案:

答案 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。