Параметр params C#

Для того, что бы метод принимал произвольное количество аргументов, применяется ключевое слово params.
Дополнительные параметры не указываются. Синтаксис:
params тип[] имя_массива

    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;
     }
    }

Подход применения не определенного количества аргументов редко используется, так как проще передать в метод коллекцию и работать с ней. Однако часто приходится использовать в задачах универа.

Обновлено: 26.12.2019 — 20:30

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.