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 之间的区别

C#中参数/参数之间的区别[重复]