C # 4.0, необязательные параметры и параметры не работают вместе

Как я могу создать метод, который имеет необязательные параметры и параметры вместе?

static void Main(string[] args) { TestOptional("A",C: "D", "E");//this will not build TestOptional("A",C: "D"); //this does work , but i can only set 1 param Console.ReadLine(); } public static void TestOptional(string A, int B = 0, params string[] C) { Console.WriteLine(A); Console.WriteLine(B); Console.WriteLine(C.Count()); } 

Ваш единственный вариант – перегрузить TestOptional (как вам нужно было сделать до C # 4). Не рекомендуется, но он очищает код в момент использования.

 public static void TestOptional(string A, params string[] C) { TestOptional(A, 0, C); } public static void TestOptional(string A, int B, params string[] C) { Console.WriteLine(A); Console.WriteLine(B); Console.WriteLine(C.Count()); } 

Пытаться

 TestOptional("A", C: new []{ "D", "E"}); 

Это сработало для меня:

  static void Main(string[] args) { TestOptional("A"); TestOptional("A", 1); TestOptional("A", 2, "C1", "C2", "C3"); TestOptional("A", B:2); TestOptional("A", C: new [] {"C1", "C2", "C3"}); Console.ReadLine(); } public static void TestOptional(string A, int B = 0, params string[] C) { Console.WriteLine("A: " + A); Console.WriteLine("B: " + B); Console.WriteLine("C: " + C.Length); Console.WriteLine(); } 
Interesting Posts

Шаблон проектирования для обработки нескольких типов сообщений

Запуск ограниченного числа дочерних процессов параллельно в bash?

Могу ли я шифровать данные так, чтобы их можно было читать нормально, но их нельзя копировать или редактировать?

Рег. Добавление OpenCV в собственный C-код через CMake на Android Studio

Каковы модификаторы доступа по умолчанию в C #?

В чем разница между BeginConnect и ConnectAsync?

Базовая безопасность в JSF

Неверный вывод команды истории ssh. Как правильно прочитать информацию о метке времени

Ethernet (интранет) и Wi-Fi (Интернет) для совместной работы

Расширение Google Chrome для отправки запросов POST / GET?

Функциональное программирование, карта Scala и свернуть влево

Имя метода должно начинаться с findBy или findOneBy. Неопределенный метод Symfony?

Как запустить программу .msi с правами администратора?

Как включить выполнение сценариев PowerShell?

Как форматировать вывод печати или строку в фиксированную ширину?

Давайте будем гением компьютера.