2 Stimmen

Unterschied zwischen "0" und "new int()" in C#

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?

5voto

Habib Punkte 211435

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

0voto

Picrofo Software Punkte 5457

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.com

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.

Powered by:

X