Что является реальным примером того, когда использовать параметры в качестве аргумента метода?

StackOverflow https://stackoverflow.com/questions/5822719

  •  26-10-2019
  •  | 
  •  

Вопрос

Как я понимаю, params это просто синтаксический сахар, который «под капюшоном» просто дает вам массив указанного вами типа.

Во -первых, когда вы это использовали?

Во -вторых, зачем вам использовать его вместо того, чтобы просто объявлять аргумент в массив?

Это было полезно?

Решение

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

double x, y, z, w;
double least = min(x, y, z, w);

Если вы хотите написать min функция, которая может быть использована таким образом, вы бы хотели использовать params.

Другие советы

Очевидный пример можно найти в таком методе, как String.Format(). Анкет Это утверждение с использованием параметров легко следовать:

string.Format("Your name is {0}, {1}", lastName, firstName);

Но без параметров это немного сложнее:

string.Format("Your name is {0}, {1}", new string[] { lastName, firstName });

Я обнаружил, что использую параметры много для подобных строковых функций. Я использую его только для улучшения читаемости кода.

Один из способов, которым я использовал его, - это прохождение запросов SQL в мой класс обертки. У меня будет немного SQL с переменным количеством параметров в нем. Таким образом, я могу просто перечислить все параметры, которые я посылаю с помощью запроса, а не создавать массив в первую очередь.

    SQLWrapper.Query(" some sql with parameters", new SqlParameter("@param1", val1),
                                                  new SqlParameter("@param1", val1),
                                                  new SqlParameter("@param1", val1));

Намного приятнее, чем альтернатива:

SQLWR

apper.Query(" some sql with parameters", new SqlParameter[]{new SqlParameter("@param1", val1),
                                                      new SqlParameter("@param1", val1),
                                                      new SqlParameter("@param1", val1)});

Приятно иметь, когда вы сталкиваетесь с ситуацией, когда вам нужно переменное количество аргументов.

Пример из библиотеки базового класса String.Split(params char[] separator), позволяя вам писать, например:

var segs = myString.Split(',',';',' ');

скорее, чем

var sets = myString.Split(new char[] {',', ';', ' '});

Основной нежилой / легче понять, что я использую Params, заключается в выполнении хранимых процедур.

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

1: Записать код индивидуально для каждой хранимой процедуры, которая займет месяцы

2: Создайте общий метод исполнителя, который будет запускать любую сохраненную процедуру и принимать любое число и тип параметров, например,

databaseHelper.ExecuteStoredProcedure(
                "myStoredProecdure",
                DbProviderHelper.StringParameter("@parameter_string", somestring),
                DbProviderHelper.BoolParameter("@parameter_string", somebool),
                DbProviderHelper.IntParameter("@parameter_int", someint));   
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top