Подтвердить что ты не робот

Необязательный массив Параметр в С#

Возможный дубликат:
передача пустого массива в качестве значения по умолчанию для необязательного параметра в С#

У меня есть метод, который выглядит ниже. В настоящее время параметр 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={}){}

Пожалуйста, предложите мне, что мне не хватает.


Я уже видел этот вопрос

Передача пустого массива в качестве значения по умолчанию для необязательного параметра

4b9b3361

Ответ 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");
        }
    }

также значение параметра должно быть константой времени компиляции