重複の可能性:
どこで、なぜ int a=new int を使用するのですか?
以下の2つの違いは何ですか?
int i =0;
int i = new int();
メモリ割り当ての場合に違いはありますか? 他に違いはありますか?
重複の可能性:
どこで、なぜ int a=new int を使用するのですか?
以下の2つの違いは何ですか?
int i =0;
int i = new int();
メモリ割り当ての場合に違いはありますか? 他に違いはありますか?
どちらも同じものにコンパイルされます。
あなたが持っていると仮定します:
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
最初の1つ
int i = 0;
name の新しい整数を初期化しi
ます。次に、その値を0
2番目の
int i = new int();
name の新しい整数をi
デフォルト値 (つまり0
) に初期化します。これも似ている
int i = default(int);
ありがとう、
これがお役に立てば幸いです:)