2

重複の可能性:
どこで、なぜ int a=new int を使用するのですか?

以下の2つの違いは何ですか?

int i =0; 
int i = new int();

メモリ割り当ての場合に違いはありますか? 他に違いはありますか?

4

2 に答える 2

5

どちらも同じものにコンパイルされます。

あなたが持っていると仮定します:

static void Main(string[] args)
{
    int i = 0;
    int j = new int();

    Console.Write("{0}{1}", i, j);
}

リリース モードでビルドし、ILSpyで実行可能ファイルを表示すると、次のようにコンパイルされます。

private static void Main(string[] args)
{
      int i = 0;
      int j = 0;
      Console.Write("{0}{1}", i, j);
}

new int()と同じですdefault(int)

ILはこちら

.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       27 (0x1b)
  .maxstack  3
  .locals init ([0] int32 i,
           [1] int32 j)
  IL_0000:  ldc.i4.0
  IL_0001:  stloc.0
  IL_0002:  ldc.i4.0
  IL_0003:  stloc.1
  IL_0004:  ldstr      "{0}{1}"
  IL_0009:  ldloc.0
  IL_000a:  box        [mscorlib]System.Int32
  IL_000f:  ldloc.1
  IL_0010:  box        [mscorlib]System.Int32
  IL_0015:  call       void [mscorlib]System.Console::Write(string,
                                                            object,
                                                            object)
  IL_001a:  ret
} // end of method Program::Main
于 2012-11-01T05:45:21.563 に答える
0

最初の1つ

int i = 0;

name の新しい整数を初期化しiます。次に、その値を0

2番目の

int i = new int();

name の新しい整数をiデフォルト値 (つまり0) に初期化します。これも似ている

int i = default(int);

ありがとう、
これがお役に立てば幸いです:)

于 2012-11-01T05:42:06.993 に答える