Я не понимаю полезности массивов параметров?

#c#

#c#

Вопрос:

Массивы параметров позволяют передавать в метод переменное количество аргументов:

     static void Method(params int[] array)
    {}
  

Но я не вижу их полезности, поскольку того же результата можно было бы достичь, указав параметр определенного типа массива:

     static void Method(int[] array)
    {}
  

Итак, какие преимущества (если таковые имеются) имеет массив параметров по сравнению со значением параметра типа array?

Спасибо

Ответ №1:

Это просто вопрос удобства чтения кода. Например, строка.Формат:

 string value = string.Format("SomeFormatString", param1, param2, param3, param4.... param999);
  

Это могло быть написано подобным образом в другой жизни:

 string value = string.Format("SomeFormatString", new string[] { param1, param2, param3 });
  

В конце концов, это просто синтаксический сахар, облегчающий чтение и понимание кода.

Ответ №2:

Во втором примере потребитель не может вызвать это с помощью

 MyType.Method(1, 2, 3)
  

Ответ №3:

Преимущество в том, что компилятор автоматически создает массив для вас:

 string coor = String.Concat("x=", x, ", y=", y);
  

Код, который генерируется для вас, на самом деле:

 string coor = String.Concat(new string [] { "x=", x, ", y=", y });
  

Вы даже получаете лучшее из обоих миров. Если у вас случайно есть ваши данные в массиве, вы можете передать их методу, у которого есть params параметр.

Ответ №4:

Я, например, предпочитаю писать

 Method(1, 2, 3, 4, 5);
  

вместо

 Method(new int[] { 1, 2, 3, 4, 5} );
  

Ответ №5:

Это то, как они называются.

В первом примере с параметрами вы можете вызвать Method(1,2,3,4,5);

Во втором примере, без параметров, вы должны вызвать его Method(new [] {1,2,3,4,5});