¿Cómo se implementa foreach en C #? [duplicar

Esta pregunta ya tiene una respuesta aquí:

¿Cómo funcionan los bucles foreach en C #? 7 respuestas

¿Cómo exactamente esforeach implementado en C #?

Imagino una parte de ella con el siguiente aspecto:

var enumerator = TInput.GetEnumerator();
while(enumerator.MoveNext())
{
  // do some stuff here
}

Sin embargo, no estoy seguro de lo que realmente está sucediendo. ¿Qué metodología se utiliza para devolverenumerator.Current para cada ciclo? ¿Regresa [para cada ciclo] o toma una función anónima o algo para ejecutar el cuerpo deforeach?

Respuestas a la pregunta(2)

Su respuesta a la pregunta