Кортежи (Tuples)
Кортежи (Tuples)
Кортежи
Кортежи
Кортежи
Кортежи
Кортежи
Создание кортежа
Создание кортежа
Создание кортежа
Именование элементов кортежа
Кортежи
Деконструирование кортежей
Возвращение кортежей методом
Конструктор класса класса
Деконструктор класса
Деконструктор класса
1.58M
Category: programmingprogramming

ЛК_13_1_Кортежи

1. Кортежи (Tuples)

БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
1

2. Кортежи (Tuples)

ОБЩАЯ ИНФОРМАЦИЯ
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
2

3. Кортежи

Подобно анонимным типам, кортежи предоставляют
простой способ хранения набора значений. Основная
цель кортежей — безопасно возвращать несколько
значений из метода, не прибегая к параметрам out
(чего нельзя сделать с анонимными типами).
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
3

4. Кортежи

В версиях C# до C# 7.0 каждое возвращаемое
значение было одним объектом.
В C# 7.0 вы можете вернуть несколько значений,
используя кортежи.
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
4

5. Кортежи

Концепция кортежа как часть методов динамического
программирования была представлена еще в C# 4.x
(класс System.Tuple)
Однако в C# 7.0 с появлением класса
System.ValueTuple
расширено
использование
кортежей, что позволяет возвращать несколько
значений, а не только один объект.
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
5

6. Кортежи

Типы System.ValueTuple являются структурами
(типами значений). Типы System.Tuple являются
классами (ссылочными типами).
Типы
System.ValueTuple
изменяемы.
Типы
System.Tuple неизменяемы.
Элементы
данных
типов
System.ValueTuple
являются полями. Элементы данных типов
System.Tuple являются свойствами.
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
6

7. Кортежи

СОЗДАНИЕ КОРТЕЖА
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
7

8. Создание кортежа

Самый простой способ создать литерал кортежа —
перечислить нужные значения в круглых скобках.
Это создает кортеж с безымянными элементами,
которые затем можно получить через свойства Item1,
Item2 и т. д.
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
8

9. Создание кортежа

var car = ("BMW", 1990);
Console.WriteLine($"Пpоизводитель:{car.Item1},
год выпуска:{car.Item2}");
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
9

10. Создание кортежа

var car = ("BMW", 1990);
или
(string, int) car = ("BMW", 1990);
Console.WriteLine($"Пpоизводитель:{car.Item1},
год выпуска:{car.Item2}");
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
10

11. Именование элементов кортежа

(string brand, int date) car = ("BMW", 1990);
или
var car = (brand:"BMW", date:1990);
или
var ( brand,
date) = ("BMW", 1990);
Console.WriteLine($"Пpоизводитель:{car.brand},
год выпуска:{car.date}");
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
11

12. Кортежи

ИСПОЛЬЗОВАИЕ КОРТЕЖЕЙ
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
12

13. Деконструирование кортежей

var car = ("BMW", 1990);
string brand = car.Item1;
int date = car.Item2;
(string brand, int date) c = car;
Console.WriteLine($"Пpоизводитель:{c.brand},
год выпуска:{c.date}");
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
13

14. Возвращение кортежей методом

var car = GetCAr();
Console.WriteLine($"Пpоизводитель:{car.Item1},
год выпуска:{car.Item2}");
static (string, int) GetCAr() => ("BMW", 1990);
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
14

15. Конструктор класса класса

internal class Person
{
public int Age { get; set; }
public string Name { get; set; }
public bool OnVacation { get; set; }
public Person(int age,
string name,
bool onVacation) =>
(Age, Name, OnVacation) = (age, name, onVacation);
}
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
15

16. Деконструктор класса

internal class Person
{
public int Age { get; set; }
public string Name { get; set; }
public bool OnVacation { get; set; }
public Person(int age, string name, bool onVacation) =>
(Age, Name, OnVacation) = (age, name, onVacation);
public void Deconstruct(out int age,
out string name,
out bool onVacation)
=> (age, name, onVacation)=(Age, Name, OnVacation);
}
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
16

17. Деконструктор класса

var person = new Person(22,"Jon", true);
var (personAge, personName, free) = person;
Console.WriteLine($"{personAge}--{personName}--{free}");
БГУИР кафедра Информатики
ГЛАМАЗДИН И.И. - ДИСЦИПЛИНА: «ПРОГРАММИРОВАНИЕ»
17
English     Русский Rules