C # -Как использовать пустой список <string>в качестве необязательного параметра - PullRequest
51 голосов
/ 04 августа 2011

Может кто-нибудь привести пример этого?

Я пробовал null, string.Empty и инициализацию объекта, но они не работают, так как значение по умолчанию должно быть постоянным во время компиляции

Ответы [ 6 ]

95 голосов
/ 04 августа 2011

Просто используйте оператор объединения нулей и экземпляр пустого списка

public void Process(string param1, List<string> param2 = null) {
    param2 = param2 ?? new List<String>();
}

Проблема в том, что если «param2» имеет значение null и вы назначаете новую ссылку, то она не будет доступна в контексте вызова.

13 голосов
/ 30 июля 2015

Вы также можете сделать следующее, используя default, который является постоянной времени компиляции (null в случае List<T>):

void DoSomething(List<string> lst = default(List<string>)) 
{
    if (lst == default(List<string>)) lst = new List<string>();
}
4 голосов
/ 04 августа 2011

невозможно. Вместо этого вы должны использовать перегрузку метода.

public static void MyMethod(int x, List<string> y) { }
public static void MyMethod(int x)
{
    MyMethod(x, Enumerable<string>.Empty());
}
2 голосов
/ 04 августа 2011
    private void test(List<string> optional = null)
    {

    }

извините за строку вместо списка. Ноль отлично работает для меня на 4.0, я использую Visual Studio 2010

0 голосов
/ 14 июля 2019

приватный тест void (params object [] params) {

}
0 голосов
/ 04 августа 2011

Вы использовали new List<string>()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...