C#中"var"和"object"的区别

use*_*805 43 c# types

var类型是否与VariantVB相同?何时object可以接受任何数据类型,这两者之间有什么区别?

Tar*_*rik 52

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

var i = 10; //implicitly typed
int i = 10; //explicitly typed
Run Code Online (Sandbox Code Playgroud)

var不是对象

你一定要读这个:C#3.0 - Var不是Object


小智 6

不 - var只是意味着你让编译器从用于为变量赋值的表达式中推断出类型.

这只是语法糖,让你减少输入 - 尝试制作类型" var" 的方法参数,看看会发生什么:]

所以如果你有一个像这样的表达式:

var x = new Widget();
Run Code Online (Sandbox Code Playgroud)

x将是类型Widget,而不是object.

  • 它不仅仅是保存输入 - "var"是处理匿名类型的唯一方法. (7认同)

Mik*_*nty 6

其他答案是正确的,我只想补充一点,你可以实际将光标放在'var'关键字上,然后点击F12跳转到推断的类型声明.

  • 或者你可以将光标放在"var"上稍微长一点,然后在工具提示中看到感应类型; o) - Cédric1分钟前 (9认同)