С# -Как использовать пустой список <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>()?