Я просто наткнулся на атрибуты информации о вызывающем абоненте С# 5 (http://msdn.microsoft.com/en-us/library/hh534540.aspx).
Это похоже на очень полезную функцию, и я прочитал некоторую документацию (http://www.codeproject.com/Tips/606379/Caller-Info-Attributes-in-Csharp).
Однако мне просто интересно: почему нужно передавать значения по умолчанию? Как они используются?
В следующем примере кода показано, как использовать атрибуты информации о вызывающем абоненте:
public static void ShowCallerInfo([CallerMemberName]
string callerName = null, [CallerFilePath] string
callerFilePath = null, [CallerLineNumber] int callerLine=-1)
{
Console.WriteLine("Caller Name: {0}", callerName);
Console.WriteLine("Caller FilePath: {0}", callerFilePath);
Console.WriteLine("Caller Line number: {0}", callerLine);
}
Мой вопрос: каковы значения по умолчанию для null
, null
и -1
? Как отличается код выше:
public static void ShowCallerInfo([CallerMemberName]
string callerName = "hello", [CallerFilePath] string
callerFilePath = "world", [CallerLineNumber] int callerLine=-42)
{
Console.WriteLine("Caller Name: {0}", callerName);
Console.WriteLine("Caller FilePath: {0}", callerFilePath);
Console.WriteLine("Caller Line number: {0}", callerLine);
}
Как я понимаю, это необязательные параметры, и компилятор поставляет значение по умолчанию, заменяя любое значение по умолчанию, которое мы назначаем. В этом случае, почему мы указываем значения по умолчанию? Есть ли какой-то странный крайний случай, когда компилятор может не заполнить значения и прибегает к значениям по умолчанию, которые мы поставили? Если нет, то почему нас просят ввести эти данные? Кажется довольно неуклюжим просить разработчиков предоставить значения по умолчанию, которые никогда не будут использоваться.
Отказ от ответственности: я пробовал это, но я ничего не смог найти. Я почти боюсь задавать вопросы о SO, потому что большинство таких новичков задают такую враждебность, но в крайнем случае я собираюсь задать вопрос. Модераторы/старшие пользователи, без обид - я действительно пытался найти информацию в другом месте, прежде чем публиковать это.