Estoy explorando la referencia del código fuente de .NET ( https://referencesource.microsoft.com/ ) en un esfuerzo por encontrar los archivos de código en los que se definen las palabras clave. Específicamente, estoy interesado en cómo se define/implementa await en TPL, pero también me gustaría explorar la implementación interna de otras palabras clave en algún momento.
Hacer una búsqueda de la cadena "esperar" en su sitio de referencia anterior solo devuelve nombres de clase, propiedad y campo que contienen la cadena "esperar" (por ejemplo, class AwaitTaskContinuation ).
Me doy cuenta de que esto parece una pregunta básica, pero no puedo encontrar ninguna información sobre esto en ningún otro lugar.
https://referencesource.microsoft.com/ proporciona código fuente para las bibliotecas de .NET Framework (para .NET Core use https://source.dot.net/ ) no "define" palabras clave.
En el caso particular de await , es el azúcar sintáctico que maneja el compilador ( Roslyn ) y puede intentar buscar cómo lo desazuca al código real en el repositorio de github .
O (diría mejor, al menos al principio) use alguna herramienta de descompilación de C#. Hay uno en línea https://sharplab.io/ (maneja la descompilación a C#, IL e incluso JIT Asm) - descompilación de ejemplo para el siguiente código:
using System.Threading.Tasks; public class C { public async Task M() => await Task.Yield(); }