params Параметр со значениями параметров по умолчанию

Я видел params параметр больше, чем я могу сказать, и всегда удалял его, не задумываясь о его значении. Теперь я узнал его цель. Я только что узнал, что params Параметр должен быть последним в списке параметров. Но это то, что я узнал о параметрах, для которых указано значение по умолчанию. Пример:

MyMethod(string Name, int blah=0). 

Таким образом, вопрос заключается в том, если мне нужно указать значение по умолчанию, как указано выше, при необходимости использования paramsможно ли это сделать? Если так, что должно быть объявлено последним? Пример:

MyMethod(int blah=0, params string[] variableData). 

Еще раз спасибо за вашу помощь. Джеймс

2 ответа

Решение

Ваш пример верен:

public void TestMethod(string name = "asdasd", params int[] items)
{
}

params должен быть последним, независимо от того, какой параметр используется до этого.

Да, params здесь особый случай - это единственная ситуация, в которой параметр без значения по умолчанию может следовать после параметра со значением по умолчанию.

Однако вы не можете затем вызвать метод и воспользоваться params сторона вещей (для непустого массива) без указания дополнительного параметра:

MyMethod(5, "x", "y");                            // Fine, no defaulting
MyMethod(variableData: new string[] { "x", "y"}); // Default for blah
MyMethod();                                       // Default for blah, empty variableData
MyMethod(new string[] { "x, "y" });               // Invalid   
MyMethod("x", "y");                               // Invalid
Другие вопросы по тегам