
Недавно столкнулся с задачей, с которой каждый сталкивался не раз. Мне было необходимо получить результат работы функции в виде нескольких переменных. В поисках решения нашел метод, который мне очень понравился. Поэтому я решил описать его здесь.
Итак, для вывода из функции несколько переменных я использовал кортежи.
Кортежи (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;
Вот собственно и все.
Оставить комментарий