C # - Método de igual valor del tipo de valor: ¿por qué el compilador utiliza la reflexión?

Acabo de encontrar algo bastante extraño para mí: cuando usas el método Equals () en un tipo de valor (y si este método no se ha anulado, por supuesto) obtienes algo.muy muy lento - los campos se comparan uno a uno usando la reflexión! Como en :

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

Mi pregunta: ¿por qué el compilador de C # no genera un método simple para comparar tipos de valor? Algo así como (en la definición de MyStruct):

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

El compilador sabe cuáles son los campos de MyStruct en tiempo de compilación, ¿por qué espera hasta el tiempo de ejecución para enumerar los campos de MyStruct?

Muy extraño para mi

Gracias :)

ADICIONAL : Lo siento, me doy cuenta de que, por supuesto,Equals no es una palabra clave del lenguaje sino un método de tiempo de ejecución ... El compilador no es consciente de este método. Así que tiene sentido aquí usar la reflexión.

Respuestas a la pregunta(3)

Su respuesta a la pregunta