【发布时间】:2010-12-05 21:21:41
【问题描述】:
var 类型是否等同于 VB 中的Variant?当object 可以接受任何数据类型时,这两者有什么区别?
【问题讨论】:
-
等到
dynamic增加更多混乱;-p -
;) 在这种情况下,你们也是来帮助我的!
var 类型是否等同于 VB 中的Variant?当object 可以接受任何数据类型时,这两者有什么区别?
【问题讨论】:
dynamic 增加更多混乱;-p
不——var 只是意味着你让编译器从用于为变量赋值的表达式中推断类型。
这只是一种语法糖,可以让您减少打字 - 尝试创建一个“var”类型的方法参数,看看会发生什么:]
所以如果你有这样的表达式:
var x = new Widget();
x 的类型是 Widget,而不是 object。
【讨论】:
var 是处理匿名类型的唯一方法。
一个区别是使用对象装箱和拆箱。
【讨论】:
var obj = new ApplicationInstallerForBase(); 而不是ApplicationInstallerForBase obj = new ApplicationInstallerForBase();。 ApplicationInstallerForBase 是我的应用程序中的一个类。 注意:我没有否决你的帖子。
添加到帖子中。
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”而不是类时,您可以访问父类和子类属性。它的行为就像为子类创建对象。
【讨论】:
从 Visual C# 3.0 开始,在方法范围内声明的变量可以具有隐式类型 var。隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定类型。 i 的以下两个声明在功能上是等效的:
var i = 10; //implicitly typed
int i = 10; //explicitly typed
var 不是对象
你一定要读这个:C# 3.0 - Var Isn't Object
【讨论】:
其他答案是正确的,我想补充一点,您实际上可以将光标放在“var”关键字上,然后按 F12 跳转到推断的类型声明。
【讨论】: