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