Trong C# Net, System.Diagnostics.Debug.WriteLine
có một số quá tải, trong đó có hai:quá tải Debug.WriteLine dường như mâu thuẫn
//http://msdn.microsoft.com/en-us/library/cc190153.aspx
public static void WriteLine(string format, params Object[] args);
//http://msdn.microsoft.com/en-us/library/1w33ay0x.aspx
public static void WriteLine(string message, string category);
ý định của tôi là để gọi đầu tiên với:
Debug.WriteLine("The path is {0}", myObj.myPath);
Nhưng nó xuất hiện rằng tôi đang thực sự gọi quá tải thứ hai, bởi vì nó là một trận đấu chính xác hơn.
Có một cách đơn giản để cho biết rằng tôi muốn là người đầu tiên?
nỗ lực tốt nhất của tôi cho đến nay là:
Debug.WriteLine("The path is {0}", new object[]{myObj.myPath});
Debug.WriteLine("The path is {0}", myObj.myPath, "");
Nhưng không ai trong số những cái nhìn rất thanh lịch.
Đây là một ví dụ vàng của lý do tại sao quá tải nên luôn luôn có ngữ nghĩa giống hệt nhau. Nếu hai phương thức có hành vi khác nhau, chúng phải có tên khác nhau. quá tải cũng tốt để mô phỏng các thông số mặc định hoặc variadic, hoặc nếu có được tối ưu hóa các trường hợp đặc biệt. Tuy nhiên, chúng phải luôn giống nhau trong hành vi. –