TGViewer
Библиотека шарписта | C#, F#, .NET, ASP.NET Библиотека шарписта | C#, F#, .NET, ASP.NET @csharpproglib · 21.7K subscribers
Post #7044 2.9K
🤩 Именованные поля в кортежах C#

Иногда нужно вернуть из метода два-три значения или временно сгруппировать данные. Создавать для этого отдельный класс — лишняя работа. В C# 7+ есть кортежи с именованными полями, и они закрывают эту задачу.

Как это выглядит

Самый простой пример:
var user = (Name: "John", Age: 25);
Console.WriteLine(user.Name); // John
Console.WriteLine(user.Age); // 25


Никакого класса, никакой модели. Просто структура с именами прямо там, где она нужна.

Где это помогает

Чаще всего кортежи с именами используют в возвращаемых значениях методов. Вместо того чтобы создавать out-параметры или отдельный DTO, можно сделать так:
public (string Name, bool IsValid) Validate(string input)
{
var isValid = !string.IsNullOrWhiteSpace(input);
return (input.Trim(), isValid);
}

var result = Validate(" John ");
Console.WriteLine(result.Name); // John
Console.WriteLine(result.IsValid); // True


Читаемость не хуже, чем у класса, а кода меньше.

Деконструкция

Кортеж можно сразу разложить по переменным:
var (name, isValid) = Validate("  John  ");
Console.WriteLine(name); // John
Console.WriteLine(isValid); // True


Это удобно, если дальше в коде поля используются отдельно, а сам кортеж не нужен.

Когда кортеж не подходит

Кортежи хороши для локального использования и возвращаемых значений. Но если структура данных:
- передаётся между слоями приложения
- сериализуется в JSON или хранится в базе
- используется более чем в двух-трёх местах

Тогда лучше создать полноценный класс или record. Кортеж не несёт никакой доменной семантики — это просто набор значений.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#sharp_view
  • 👍 5
  • ❤ 4
  • 🥱 1
More from @csharpproglib
  1. Sep 22, 2026💡 Replace, Regex или StringBuilder? Для замены текста в C# есть несколько инструментов. И…
  2. Sep 21, 2026⚙️ Настоящие атомарные операции Если Volatile решает проблему видимости, то Interlocked ре…
  3. Sep 20, 2026💪 Разминка перед трудовыми буднями Что произойдёт? ❤️ — список станет [1, 3] 🔥 — Invalid…
  4. Sep 19, 2026🧩 Middleware в ASP.NET Core: 3 ловушки Middleware — звено HTTP pipeline: app.Use(async (c…
  5. Sep 18, 2026📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта #garbage_collector
  6. Sep 17, 2026🦆 Duck typing в C# — почти как в TypeScript В TypeScript достаточно, чтобы у объекта был…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →