object
和 和有什么不一样var
?
问问题
1520 次
2 回答
7
var
- 未明确指定类型。让编译器弄清楚该类型是什么。- 类型在设计时是固定的,不能引用其他类型的对象。
- 如
Pauli
评论中所述,您会得到intelliSense
. - 必须初始化。
var i;
不会编译。 - 不能用作方法的返回类型。
- 必须是局部变量。不是字段或属性。
- 与
Anonymous Types
. 你得到intelliSense
.
object
-System.Object
。
- 可用于在运行时引用任何类型。
- 在这里你不明白
intelliSense
。
例子:
var i = 0; // i is of type `System.Int32`. Same as "int i = 0;"
i = "Some String"; // Compile time error.
object o = 0;
o = "Some String"; // Works
于 2010-12-20T06:09:33.183 回答
1
- object 将在运行时确定,但 var 在编译时确定。
例如:
var i = 2;
object j = 2;
你在 ildasm 中查看它:
IL_0000: nop
IL_0001: ldc.i4.2
IL_0002: stloc.0
IL_0003: ldc.i4.2
IL_0004: box [mscorlib]System.Int32
IL_0009: stloc.1
您可以看到 object item 应该装箱,而 var item 不需要装箱。
你也可以这样做:
object i; i = 2;
但你不能这样做:
var i; i = 2;
你会得到编译错误。
- Object 是 .Net 中的所有东西都继承自它的类型,因此由于继承,您可以对任何类型的 y 执行 object x = y,但 var 是隐式类型定义的关键字,例如 var i = 2 表示 int i = 2.
于 2010-12-20T06:08:50.893 回答