我读了几篇文章,说在C#3.0中引入命名参数时,参数的名称现在是公共合约的一部分。 这是真的吗?它是什么意思?我运行了一个简单的测试,并且在MyLib.dll中更改了一个参数名称并没有打破MyApp.exe,它使用带有原始名称的命名参数调用该方法,我认为是因为C#编译器在编译时确实重载了解析, IL对参数名称一无所知。这是反汇编代码看起来反光什么:C#中的参数名称更改是否为运行时间更改?
private static void Main()
{
bool CS$0$0000 = true;
Class1.DoSomething(CS$0$0000);
Console.ReadKey();
}
...这是原始的源代码:
static void Main() {
MyLib.Class1.DoSomething(a: true);
Console.ReadKey();
}
是的,你明白这一点,它不会打破。面对突破的情况很难,我不能随便提出一个迟到的绑定方案。 –