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;

そして、あなたはそれを空想的に見ます:

  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 アイテムはボックス化する必要があり、var アイテムはボックス化する必要がないことがわかります。

objectvarの MSDN

  • また、次のことができます。

       object i;
       i = 2;
    

    しかし、あなたはできません:

       var i;
       i = 2;
    

    コンパイルエラーになります。

  • オブジェクトは、.Net のすべてのものから継承された型であるため、継承のために y の任意の型に対してオブジェクト x = y を実行できますが、var は暗黙的な型定義のキーワードです。たとえば、var i = 2 は int i = を意味します。 2.
于 2010-12-20T06:08:50.893 に答える