Основы кортежей значений
Создавайте облегчённые кортежи для объединения данных.
«Основы кортежей значений» — бесплатный урок C# Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.
Что такое кортеж
Кортеж объединяет несколько значений в один лёгкий набор без определения класса. Кортежи-значения C# записываются в круглых скобках: (int, string).
using System;
class Program
{
static void Main()
{
(int, string) pair = (1, "one");
Console.WriteLine(pair.Item1 + " = " + pair.Item2);
}
}Создание кортежа-значения
Запишите значения в круглых скобках. Компилятор выведет тип кортежа по этим значениям.
using System;
class Program
{
static void Main()
{
var point = (3, 4);
Console.WriteLine("x=" + point.Item1 + ", y=" + point.Item2);
}
}Доступ к элементам: Item1, Item2
К неименованным элементам кортежа обращаются последовательно через Item1, Item2, Item3 и так далее.
using System;
class Program
{
static void Main()
{
var rgb = (255, 128, 0);
Console.WriteLine("R=" + rgb.Item1 + " G=" + rgb.Item2 + " B=" + rgb.Item3);
}
}Кортежи могут содержать разные типы
Каждый элемент может иметь свой тип. В одном кортеже можно смешивать числа, строки, логические значения и другие данные.
using System;
class Program
{
static void Main()
{
var user = ("Ada", 36, true);
Console.WriteLine(user.Item1 + ", age " + user.Item2 + ", active=" + user.Item3);
}
}Кортежи изменяемы
Элементы кортежа-значения можно переназначать, поскольку каждый ItemN является доступным для записи полем.
using System;
class Program
{
static void Main()
{
var score = (player: "A", points: 0);
score.points = 10;
score.points += 5;
Console.WriteLine(score.player + ": " + score.points);
}
}Кортежи как локальные наборы
Кортежи отлично подходят для временного объединения значений внутри метода без создания отдельного типа.
using System;
class Program
{
static void Main()
{
var range = (min: 5, max: 50);
int span = range.max - range.min;
Console.WriteLine("Span: " + span);
}
}Сравнение кортежей
Кортежи-значения поддерживают проверку на равенство: два кортежа равны, если равны все соответствующие элементы.
using System;
class Program
{
static void Main()
{
var a = (1, 2);
var b = (1, 2);
var c = (1, 3);
Console.WriteLine(a == b);
Console.WriteLine(a == c);
}
}Вложенные кортежи
Элементом кортежа сам может быть кортеж, что позволяет создавать небольшие структурированные наборы.
using System;
class Program
{
static void Main()
{
var line = (start: (0, 0), end: (3, 4));
Console.WriteLine("From " + line.start.Item1 + "," + line.start.Item2 +
" to " + line.end.Item1 + "," + line.end.Item2);
}
}Кортежи в коллекциях
Кортежи можно хранить в списке, чтобы объединять связанные пары данных без создания класса.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var scores = new List<(string, int)>
{
("Ann", 90),
("Bob", 85)
};
foreach (var s in scores)
Console.WriteLine(s.Item1 + ": " + s.Item2);
}
}Семантика значений
Кортеж-значение является структурой, поэтому его присваивание копирует значения. Изменение копии не влияет на исходный кортеж.
using System;
class Program
{
static void Main()
{
var original = (n: 1);
var copy = original;
copy.n = 99;
Console.WriteLine("original=" + original.n + ", copy=" + copy.n);
}
}Собираем всё вместе
Кортежи-значения позволяют быстро создавать типизированные наборы, идеально подходящие для недолговечных данных внутри метода или простого списка.
using System;
class Program
{
static void Main()
{
var result = (count: 3, total: 150);
double average = (double)result.total / result.count;
Console.WriteLine("Average: " + average.ToString("0.0"));
}
}Быстрая проверка
Проверьте, насколько хорошо вы понимаете кортежи-значения.
Итоги
Кортеж-значение объединяет несколько значений в круглых скобках, например (int, string), без создания класса. Доступ к неименованным элементам осуществляется через Item1, Item2. Кортежи являются изменяемыми структурами с семантикой значений и поддерживают проверку на равенство. Они идеально подходят для быстрых локальных наборов данных.
using System;
class Program
{
static void Main()
{
var t = (1, "one", true);
Console.WriteLine(t.Item1 + " " + t.Item2 + " " + t.Item3);
}
}Часто задаваемые вопросы
Урок «Основы кортежей значений» бесплатный?
Да — полный текст урока «Основы кортежей значений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.
Чему я научусь в уроке «Основы кортежей значений»?
Создавайте облегчённые кортежи для объединения данных. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Основы кортежей значений»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы кортежей значений
- Именованные элементы кортежей
- Декомпозиция
- Кортежи как возвращаемые значения методов