Value Type Equals-Methode - warum verwendet der Compiler Reflexion?

Ich bin gerade auf etwas Seltsames gestoßen: Wenn Sie die Equals () -Methode für einen Werttyp verwenden (und diese Methode natürlich nicht überschrieben wurde), erhalten Sie etwassehr, sehr langsame Felder werden eins zu eins durch Reflektion verglichen! Wie in :

<code>public struct MyStruct{
   int i;
}

   (...)

   MyStruct s, t;
   s.i = 0;
   t.i = 1;
   if ( s.Equals( t ))   /*  s.i will be compared to t.i via reflection here. */
      (...)
</code>

Meine Frage: Warum generiert der C # -Compiler keine einfache Methode zum Vergleichen von Werttypen? So etwas wie (in der Definition von MyStruct):

<code>   public override bool Equals( Object o ){
      if ( this.i == o.i )
         return true;
      else
         return false;
   }
</code>

Der Compiler weiß, welche Felder MyStruct zur Kompilierungszeit enthält. Warum wartet er bis zur Laufzeit, um MyStruct-Felder aufzulisten?

Sehr seltsam für mich.

Vielen Dank :)

HINZUGEFÜGT : Sorry, mir ist nur klar, dass natürlichEquals ist kein Sprachschlüsselwort, sondern eine Laufzeitmethode ... Dem Compiler ist diese Methode überhaupt nicht bekannt. Es ist also sinnvoll, hier Reflexion zu verwenden.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage