Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

.NET und C# ohne Web?

19.05.21 17:30
Re: .NET und C# ohne Web?
 
alex445 местный житель
в ответ Программист 19.05.21 15:45, Последний раз изменено 19.05.21 17:40 (alex445)
Как по-мне, кортежи в первую очередь с точки зрения читабельности кода не самая удобная штука. out-параметры гораздо удобнее. Хотя еще удобнее было бы просто сделать возврат класса/интерфейса с одними геттерами :)

Почему не удобно? Даже в версии 7.3 языка уже можно давать осмысленные имена элементам кортежа. В примере ниже при выводе в консоль res.sum и res.count подсвечиваются IntelliSense (тут и код нормально не вставляется). Хреново видно, т.к. разметки для кода нет, но и так понятно - возврат из метода кортежа с осмысленными названиями полей, результат возврата - тоже кортеж с осмысленными названиями, интеллисенс сразу всё подхватывает и подсвечивает. Возиться с предварительным объявлением аут-параметров не надо, классы объявлять не надо. Вобщем, очень похоже на анонимные типы, только тут неявный кортеж (без явного объявления Tuple). В теле метода специально назвал переменные с единичкой в конце, чтобы показать, что имена возвращаемых полей кортежа определяются в возврате метода.


public static (int sum, int count) SumNumbers(IEnumerable<int> sequence)
{
    int sum1 = 0;
    int count1 = 0;
    foreach (var value in sequence)
    {
        sum1 += value;
        count1++;
    }

    return (sum1, count1);
}

static void Main(string[] args)
{
    var res = SumNumbers(Enumerable.Range(1, 5));
    Console.WriteLine($"Sum: {res.sum},  Count: {res.count}");
}
 

Перейти на