Перегруженные строковые методы с интерполяцией строк
Почему интерполяция строк предпочитает перегружать методstring
вместоIFormattable
?
Представьте себе следующее:
static class Log {
static void Debug(string message);
static void Debug(IFormattable message);
static bool IsDebugEnabled { get; }
}
У меня есть объекты с очень дорогимиToString()
, Ранее я делал следующее:
if (Log.IsDebugEnabled) Log.Debug(string.Format("Message {0}", expensiveObject));
Теперь я хотел иметь логику IsDebugEnabled внутриDebug(IFormattable)
и вызывать ToString () для объектов в сообщении только при необходимости.
Log.Debug($"Message {expensiveObject}");
Это, однако, называетDebug(string)
перегрузки.