C # - Typ wartości Metoda równa - dlaczego kompilator używa refleksji?

Po prostu natknąłem się na coś bardzo dziwnego dla mnie: kiedy używasz metody Equals () na typie wartości (a jeśli ta metoda nie została zastąpiona, oczywiście) masz cośbardzo bardzo powolne pola są porównywane jeden do jednego za pomocą odbicia! Jak w :

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

Moje pytanie: dlaczego kompilator C # nie generuje prostej metody porównywania typów wartości? Coś w stylu (w definicji MyStruct):

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

Kompilator wie, jakie są pola MyStruct w czasie kompilacji, dlaczego czeka do czasu, gdy środowisko wykonawcze wyliczy pola MyStruct?

Bardzo dziwne dla mnie.

Dzięki :)

DODANY : Przepraszam, po prostu zdaję sobie sprawę, że oczywiścieEquals nie jest słowem kluczowym języka, ale metodą wykonawczą ... Kompilator jest całkowicie nieświadomy tej metody. Dlatego warto tu skorzystać z refleksji.

questionAnswers(3)

yourAnswerToTheQuestion