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()); }
- Как использовать необязательные параметры в C #?
- Дополнительные параметры Java
- Как передать тип с нулевым значением в функцию P / invoked
- C # 4.0: Можно ли использовать TimeSpan в качестве необязательного параметра со значением по умолчанию?
- Могу ли я иметь необязательный параметр для веб-службы ASP.NET SOAP
- Как обрабатывать нулевые или необязательные параметры структуры dll в C #
- Передача пустого массива в качестве значения по умолчанию для необязательного параметра
- избегая скуки факультативных параметров
- Действие параметра , в котором T3 может быть необязательным
- Дополнительные параметры C # для переопределенных методов
- C # 4.0 необязательные аргументы out / ref
- Как использовать необязательные параметры в хранимой процедуре T-SQL?
Ваш единственный вариант – перегрузить 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(); }