Необязательный массив Параметр в С#
Возможный дубликат:
передача пустого массива в качестве значения по умолчанию для необязательного параметра в С#
У меня есть метод, который выглядит ниже. В настоящее время параметр tags
НЕ является необязательным
void MyMethod(string[] tags=null)
{
tags= tags ?? new string[0];
/*More codes*/
}
Я хочу сделать параметр tags
как необязательный, как c#
, чтобы сделать параметр необязательным, вы можете установить значение по умолчанию в сигнатуре метода. Я пробовал под хаками, но никто не работал.
Код, который не сработал - 1
void MyMethod(string[] tags=new string[0]){}
Код, который не сработал - 2
void MyMethod(string[] tags={}){}
Пожалуйста, предложите мне, что мне не хватает.
Я уже видел этот вопрос
Передача пустого массива в качестве значения по умолчанию для необязательного параметра
Ответы
Ответ 1
документация для дополнительных аргументов говорит:
Значение по умолчанию должно быть одним из следующих типов выражений:
-
постоянное выражение;
-
выражение формы new ValType()
, где ValType
- тип значения, например enum
или struct
;
-
выражение формы default(ValType)
, где ValType
- тип значения.
Так как new string[0]
не является ни константным выражением, ни оператором new
, за которым следует тип значения, он не может использоваться как значение аргумента по умолчанию.
Первый отрывок кода в вашем вопросе действительно хороший способ:
void MyMethod(string[] tags = null)
{
tags = tags ?? new string[0];
// Now do something with 'tags'...
}
Ответ 2
Не уверен, что я правильно понял, что это работает.
static void Main(string[] args)
{
TestMe();
}
private static void TestMe(string[] param = null)
{
if (param == null)
{
Console.WriteLine("its empty");
}
}
также значение параметра должно быть константой времени компиляции