#c_sharp #c_sharp_faq
Как вернуть несколько значений из функции в C#
Ответы
Ответ 1
В версиях C# c 4 по 6 включительно, лучшими вариантами вернуть из функции(метода вернее), являлись возвращение кортежа Tuple<> или создание класса\структуры с нужными свойствами. Вариант с out-параметрами, хуже, т.к. немного выбивается из основных парадигм применяемых при разработке на C#, и был встроен скорее для поддержки импорта нативных функций. На сегодняшний день (C#7) удобной и достаточно качественной альтернативой является использование кортежей поддерживаемых на уровне синтаксиса языка при помощи значимого типа ValueTuple (Правда требуется добавлять библиотеку System.ValueTuple, например через NuGet). возвращение кортежа Tuple<> public TupleGetVasya() { return Tuple.Create("Вася", 16); } создание класса class Person { public string Name {get;set;} public int Age {get;set;} } ... public Person GetVasya() { return new Person { Name = "Вася", Age = 16 }; } использование ValueTuple public (string Name, int Age) GetVasya() { return ("Вася", 16); } Ответ 2
Для того чтобы вернуть несколько значений из функции, нужно объявить необходимые параметры с модификаторами out. Например. class SomeClass { public int getManyData(out object outData1, out object outData2) { // Код функции outData1 = someValue1; // Необходимо инициализировать выходной параметр outData2 = someValue2; // Необходимо инициализировать выходной параметр return result; } }Ответ 3
Вернуть Tuple<>
Комментариев нет:
Отправить комментарий