В C# .Net, System.Diagnostics.Debug.WriteLine
имеет несколько перегруженных, включая эти два:Debug.WriteLine перегрузках, кажется, конфликтовать
//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);
Мое намерение назвать первый с:
Debug.WriteLine("The path is {0}", myObj.myPath);
Но это что я на самом деле вызываю вторую перегрузку, потому что это более точное совпадение.
Есть ли простой способ указать, что я хочу первый?
Мои лучшие попытки до сих пор являются:
Debug.WriteLine("The path is {0}", new object[]{myObj.myPath});
Debug.WriteLine("The path is {0}", myObj.myPath, "");
Но ни один из этих выглядит очень элегантно.
Это прекрасный пример того, почему перегрузки всегда должны быть семантически идентичными. Если два метода имеют разные типы поведения, они должны иметь разные имена. Перегрузки прекрасно подходят для моделирования параметров по умолчанию или вариации, или если есть оптимизированные специальные случаи. Однако они всегда должны быть идентичными поведению. –