Используйте params
keyword для достижения переменного числа аргументов можете.
Ключевое слово params позволяет указать параметр метода, который принимает переменное число аргументов . Вы можете отправить список разделенных запятыми аргументов типа, указанного в объявлении параметра, или массива аргументов указанного типа. Вы также можете отправить никакие аргументы .
Например: public void Sum(params int[] args){ }
Могу ли я использовать динамический объект?
Да, но, возможно, не так, как вы думаете.
// example 1 - single parameter of type dynamic
private static void Sum(dynamic args) { }
// will not compile; Sum() expects a single parameter whose type is not
// known until runtime
Sum(1, 2, 3, 4, 5);
// example 2 - variable number of dynamically typed arguments
private static void Sum(params dynamic[] args) { }
// will compile
Sum(1, 2, 3, 4, 5);
Таким образом, вы могли бы иметь такой метод, как:
public static dynamic Sum(params dynamic[] args) {
dynamic sum = 0;
foreach(var arg in args){
sum += arg;
}
return sum;
}
И называют это: Sum(1, 2, 3, 4.5, 5)
. DLR достаточно умен, чтобы вывести правильный тип из аргументов, а возвращаемое значение будет System.Double
. Однако (по крайней мере, в случае метода Sum()
), отказавшись от явного контроля над спецификацией типа и потерей типа безопасности, кажется плохой идеей.
Я предполагаю, что у вас есть причина не использовать Enumerable.Sum()
Вы ищете 'params'? bla (params int [] variableInts) – bas
Как насчет этого: https://www.google.com/search?btnG = 1 & pws = 0 & q = method + with + dynamic + number + of + parameter + c% 23 – antonijn
Это действительно помогло бы, если бы вы разместили пример того, как вы хотите * вызывать * метод. –