Leí un par de artículos que dicen que con la introducción de argumentos con nombre en C# 3.0, el nombre de los parámetros ahora es parte del contrato público. ¿Es esto cierto y qué significa exactamente? Ejecuté una prueba simple y cambiar el nombre de un parámetro en MyLib.dll no rompió MyApp.exe que llamó al método usando un argumento con nombre con el nombre original, creo que porque el compilador de C# sobrecargó la resolución en tiempo de compilación, y generó IL no sabe nada sobre el nombre del parámetro. Esto es lo que el código desensamblado mira reflector:¿Es un cambio de nombre de parámetro en C# un cambio de ruptura de tiempo de ejecución?
private static void Main()
{
bool CS$0$0000 = true;
Class1.DoSomething(CS$0$0000);
Console.ReadKey();
}
... y este es el código fuente original:
static void Main() {
MyLib.Class1.DoSomething(a: true);
Console.ReadKey();
}
Sí, lo entendiste bien, no está rompiendo. Venir con un escenario en el que se está rompiendo es difícil, no puedo pensar en un escenario de enlace tardío donde sí lo haga. –