我讀了幾篇文章,說在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();
}
是的,你明白這一點,它不會打破。面對突破的情況很難,我不能隨便提出一個遲到的綁定方案。 –