Similar presentations:
ЛК_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
programming