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