С# -Как использовать пустой список <string> как необязательный параметр
Может ли кто-нибудь представить пример этого?
Я пробовал null
, string.Empty
и инициализацию объекта, но они не работают, поскольку значение по умолчанию должно быть постоянным во время компиляции
Ответы
Ответ 1
Просто используйте нулевой оператор коалесцирования и экземпляр пустого списка
public void Process(string param1, List<string> param2 = null) {
param2 = param2 ?? new List<String>();
}
Проблема заключается в том, что если "param2" имеет значение null, и вы назначаете новую ссылку, то она не будет доступна в вызывающем контексте.
Ответ 2
Вы также можете сделать следующее, используя default
, который является константой времени компиляции (null
в случае List<T>
):
void DoSomething(List<string> lst = default(List<string>))
{
if (lst == default(List<string>)) lst = new List<string>();
}
Ответ 3
Это невозможно. Вместо этого вы должны использовать перегрузку методов.
public static void MyMethod(int x, List<string> y) { }
public static void MyMethod(int x)
{
MyMethod(x, Enumerable<string>.Empty());
}
Ответ 4
private void test(List<string> optional = null)
{
}
извините за строку вместо списка.
Null отлично работает для меня на 4.0, я использую visual studio 2010
Ответ 5
закрытый тест void (params object [] params) {
}
Ответ 6
Используете ли вы new List<string>()
?