0Pricing
C# Academy · Урок

Основы кортежей значений

Создавайте облегчённые кортежи для объединения данных.

«Основы кортежей значений» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Основы кортежей значений
  2. Именованные элементы кортежей
  3. Декомпозиция
  4. Кортежи как возвращаемые значения методов
← Назад к C# Academy