C#中“var”和“object”之间的区别[重复]
Posted
技术标签:
【中文标题】C#中“var”和“object”之间的区别[重复]【英文标题】:Difference between "var" and "object" in C# [duplicate] 【发布时间】:2010-12-05 21:21:41 【问题描述】:var
类型是否等同于 VB 中的Variant
?当object
可以接受任何数据类型时,这两者有什么区别?
【问题讨论】:
等到dynamic
增加更多混乱;-p
;) 在这种情况下,你们也是来帮助我的!
【参考方案1】:
不——var
只是意味着你让编译器从用于为变量赋值的表达式中推断类型。
这只是一种语法糖,可以让您减少打字 - 尝试创建一个“var
”类型的方法参数,看看会发生什么:]
所以如果你有这样的表达式:
var x = new Widget();
x
的类型是 Widget
,而不是 object
。
【讨论】:
它不仅可以节省输入 -var
是处理匿名类型的唯一方法。【参考方案2】:
一个区别是使用对象装箱和拆箱。
【讨论】:
装箱和拆箱的概念涉及将值类型转换为引用类型,反之亦然,例如同时将整数值存储在数组列表中。 var 与对象或装箱/拆箱无关。这只是一个编译器技巧,用于消除由于类型名称而导致方法内部涉及的大量绒毛。例如现在我只写var obj = new ApplicationInstallerForBase();
而不是ApplicationInstallerForBase obj = new ApplicationInstallerForBase();
。 ApplicationInstallerForBase
是我的应用程序中的一个类。 注意:我没有否决你的帖子。【参考方案3】:
添加到帖子中。
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”而不是类时,您可以访问父类和子类属性。它的行为就像为子类创建对象。
【讨论】:
【参考方案4】:更多详情请看 http://www.codeproject.com/Tips/460614/Difference-between-var-and-dynamic-in-Csharp
【讨论】:
【参考方案5】:从 Visual C# 3.0 开始,在方法范围内声明的变量可以具有隐式类型 var
。隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定类型。 i
的以下两个声明在功能上是等效的:
var i = 10; //implicitly typed
int i = 10; //explicitly typed
var 不是对象
你一定要读这个:C# 3.0 - Var Isn't Object
【讨论】:
【参考方案6】:其他答案是正确的,我想补充一点,您实际上可以将光标放在“var”关键字上,然后按 F12 跳转到推断的类型声明。
【讨论】:
或者您可以将光标停留在“var”上稍长一点,然后在工具提示中查看推断的类型;o) – Cédric 1 分钟前 嗨,当我将光标放在 var 上并按 F12 时,我导航到 System.Object,所以当我将光标放在对象上并按 F12 时,我是否导航。对此的任何解释...我希望两者都相同以上是关于C#中“var”和“object”之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章
c#中的var关键字和object关键字的区别,顺便介绍下object的使用方法以及好处。
“C++ void Pointer”和“C# var”之间的区别
bash中$ VAR $ {VAR}和$(VAR)之间有什么区别? [重复]
Javascript中object.property Name和object [“property Name”]之间的区别[重复]
C# 运算符 ==、StringBuilder.Equals、Object.Equals 和 Object.ReferenceEquals 之间的区别