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