Для того, что бы метод принимал произвольное количество аргументов, применяется ключевое слово params.
Дополнительные параметры не указываются. Синтаксис:
params тип[] имя_массива
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
using System; class One { public decimal Add(params decimal[] args) { decimal res=0; for(int i=0; i<args.Length; i++) { res+=args[i]; } return res; } } class Two { decimal val; public Two(decimal arg) { val = arg; } /*неявное (автоматическое) преобразование из типа Two в тип decimal объекты будут складываться, как значения типа decimal*/ public static implicit operator decimal(Two obj) { return obj.val; } } class Program { public static int Main() { One O = new One(); //передача аргументов в виде значений, разделенных запятыми Console.WriteLine(O.Add(1,2,3,4,5,6,7,8,9)); decimal[] arra = new decimal[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; //передача аргументов в виде массива Console.WriteLine(O.Add(arra)); Two T = new Two(5); //передача аргументов в виде преобразованных объектов в тип decimal Console.WriteLine(O.Add(T,T,T,T,T)); Console.ReadKey(); return 0; } } |
Подход применения не определенного количества аргументов редко используется, так как проще передать в метод коллекцию и работать с ней. Однако часто приходится использовать в задачах универа.