Забыли пароль?

Недавно столкнулся с задачей, с которой каждый сталкивался не раз. Мне было необходимо получить результат работы функции в виде нескольких переменных.  В поисках решения нашел метод, который мне очень понравился. Поэтому я решил описать его здесь.
Итак, для вывода из функции несколько переменных я использовал кортежи.
Кортежи (Tuple) появились  начиная с версии .NET Framework 4 и могут комбинировать объекты различных типов.


В .NET 4 определены восемь обобщенных классов Tuple и один статический класс Tuple, который служит фабрикой кортежей. Существуют различные обобщенные классы Tuple для поддержки различного количества элементов; например, Tuple<T1> содержит один элемент, Tuple<T1, Т2> — два элемента и т.д. Элементы кортежа могут быть доступны через свойства Item1, Item2 … .
В случае если имеется более восьми элементов, которые нужно включить в кортеж, можно использовать определение класса Tuple с восемью параметрами. Последний параметр называется TRest, в котором должен передаваться сам кортеж. Таким образом, есть возможность создавать кортежи с любым количеством параметров.

Пример:
Вот наша функция, которая вернет три переменных, две строковых, и одну числовую.

Tuple<string, string, int> get3arg()
{
   string a = «111»;
   string b = «222»;
   int c = 333;
   return Tuple.Create(a, b, c);
}

А здесь из тела программы вызываем нашу функцию.

string z,x;
int y;

//выполняем функцию, результат в виде кортежа с переменными возвращаем в неявную переменную sm
var sm = get3arg();

//С помощью item обращаемся к элементам кортежа и вытаскиваем наши переменные которые нам
//вернула функция

z = sm.Item1;
x = sm.Item2;
y = sm.Item3;

Вот собственно и все.

Оставить комментарий