Tôi đọc một vài bài báo nói rằng với việc giới thiệu các đối số được đặt tên trong C# 3.0, tên của các tham số bây giờ là một phần của hợp đồng công khai. Điều này có đúng không, và điều đó có nghĩa là gì? Tôi chạy một thử nghiệm đơn giản và thay đổi tên tham số trong MyLib.dll không phá vỡ MyApp.exe gọi phương thức bằng cách sử dụng đối số đã đặt tên với tên gốc, tôi nghĩ vì trình biên dịch C# đã làm quá tải ở thời gian biên dịch và IL không biết gì về tên tham số. Đây là những gì mã tháo rời trông vào Reflector:Thay đổi tên thông số trong C# có thay đổi phá vỡ thời gian chạy không?
private static void Main()
{
bool CS$0$0000 = true;
Class1.DoSomething(CS$0$0000);
Console.ReadKey();
}
... và đây là mã nguồn gốc:
static void Main() {
MyLib.Class1.DoSomething(a: true);
Console.ReadKey();
}
Có, bạn hiểu rõ điều này, nó không phải là vi phạm. Đến với một kịch bản mà nó đang phá vỡ là khó khăn, tôi không thể dễ dàng đưa ra một kịch bản ràng buộc muộn mà nó làm. –