Mögliches Duplikat:
Wo und warum wird int a=new int verwendet?
Was ist der Unterschied zwischen den beiden folgenden Punkten?
int i =0;
int i = new int();
Gibt es einen Unterschied bei der Speicherzuweisung? Gibt es noch andere Unterschiede?
Mögliches Duplikat:
Wo und warum wird int a=new int verwendet?
Was ist der Unterschied zwischen den beiden folgenden Punkten?
int i =0;
int i = new int();
Gibt es einen Unterschied bei der Speicherzuweisung? Gibt es noch andere Unterschiede?
Beide haben das gleiche Ergebnis.
Angenommen, Sie haben:
static void Main(string[] args)
{
int i = 0;
int j = new int();
Console.Write("{0}{1}", i, j);
}
Wenn Sie im Release-Modus bauen und die ausführbare Datei in ILSpy kompiliert es zu:
private static void Main(string[] args)
{
int i = 0;
int j = 0;
Console.Write("{0}{1}", i, j);
}
new int()
ist identisch mit default(int)
Hier ist die 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
Die erste
int i = 0;
Initialisieren einer neuen Ganzzahl mit dem Namen i
. Setzt dann seinen Wert auf 0
Während die zweite
int i = new int();
Initialisiert eine neue Ganzzahl mit dem Namen i
auf den Standardwert (das ist 0
). Dies ist auch vergleichbar mit
int i = default(int);
Danke,
Ich hoffe, Sie finden das hilfreich :)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.