4

object和 和有什么不一样var

4

2 回答 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 不需要装箱。

对象变量的 MSDN

  • 你也可以这样做:

       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 回答