Академический Документы
Профессиональный Документы
Культура Документы
2
Включил камеру - спас лекцию!
3
Не забыть включить запись!
4
Особенности встроенных
коллекций
фото Ягур Алексей
Тимлид в YouDo
Aleksey Yagur
5
Тестирование
(http://bit.ly/2019-11-18-test)
6
Выбор статуса по завершению теста
http://bit.ly/2019-11-18-test
7
Типы для
коллекций
8
Типы для коллекций
Интерфейсы
Готовые к использованию
классы
Базовые классы
9
Интерфейсы
10
Интерфейсы
● IEnumerator
● IEnumerable
● ICollection
● IList
● IDictionary
11
● ICloneable
Интерфейсы
12
Интерфейсы
13
Интерфейсы
14
Интерфейсы
15
Пространства имён
1 System.Collections
2 System.Collections.Specialized
3 System.Collections.Generic
4 System.Collections.ObjectModel
5 System.Collections.Concurrent
16
6 System.Collections.Immutable
Массив
17
Так ли прост массив?
★ System/Array.cs ➔ Реализует:
★ 3084 строки ◆ IEnumerable
★ 6 доп.классов ◆ ICollection
★ 2 структуры ◆ ICloneable
◆ IList
★ 44 метода
◆ IStructuralComparable
(без учёта перегрузок)
◆ IStructuralEquatable
18
Классы и структуры массива
SorterObjectArray
FunctorComparer<T>
SorterGenericArray
SZArrayEnumerator
ArrayEnumerator
SZArrayHelper
+SZGenericArrayEnumerator<T>
19
EmptyArray<T>
Массив
20
Методы массива
● BinarySearch
● Resize
● IndexOf, LastIndex
● Find, FindLast, FindAll
● FindIndex, FindLastIndex
● Exists, TrueForAll
21
SZ-массив (Single-dimensional, Zero-based)
22
Двумерный массив
23
Зубчатый массив - 1
24
Зубчатый массив - 2
25
Массив: Идём против системы
26
Общее устройство массива в памяти
Ссылка на тип
(для ссылочных элементов)
Элементы массива
27
Общее устройство массива в памяти
Элементы массива
28
Пространства имён
29
Пространства имён
1 System.Collections
2 System.Collections.Specialized
3 System.Collections.Generic
4 System.Collections.ObjectModel
5 System.Collections.Concurrent
30
6 System.Collections.Immutable
System.Collections
● Stack
● BitArray
● Hashtable
● Queue
● ArrayList
31
● SortedList
Stack
32
BitArray
33
Hashtable
35
ArrayList
38
Boxing (упаковка) /Unboxing
(распаковка)
- процесс преобразования переменной из типа по значению в ссылочный.
39
Boxing (упаковка) /Unboxing
(распаковка)
Упаковка:
1. Выделяется память под новый объект в управляемой памяти
2. Значение из переменной копируется в память нового объекта
3. Возвращается адрес объекта
Распаковка:
1. Проверка на null, выбрасывание NullReferenceException, если null
2. Проверка на совпадение типов, выбрасывание
InvalidCastException, если не совпали
3. Копирование значения переменной
4. Неиспользуемый объект в управляемой памяти удаляется
Сборщиком мусора
40
Boxing (упаковка) /Unboxing
(распаковка)
41
Пространства имён
1 System.Collections
2 System.Collections.Specialized
3 System.Collections.Generic
4 System.Collections.ObjectModel
5 System.Collections.Concurrent
42
6 System.Collections.Immutable
System.Collections.Specialized
● BitVector32
● StringCollection
● ListDictionary
● HybridDictionary
43
BitVector32
47
HybridDictionary
48
Пространства имён
1 System.Collections
2 System.Collections.Specialized
3 System.Collections.Generic
4 System.Collections.ObjectModel
5 System.Collections.Concurrent
49
6 System.Collections.Immutable
System.Collections.Generic
● Dictionary<TKey, TValue>
● LinkedList<T>
● List<T>
● Queue<T>
● SortedDictionary<TKey, TValue>
● SortedSet<T>
● Stack<T>
50
Пространства имён
1 System.Collections
2 System.Collections.Specialized
3 System.Collections.Generic
4 System.Collections.ObjectModel
5 System.Collections.Concurrent
51
6 System.Collections.Immutable
System.Collections.ObjectModel
● ObservableCollection<T>
● ReadOnlyObservableCollection<T>
52
Пространства имён
1 System.Collections
2 System.Collections.Specialized
3 System.Collections.Generic
4 System.Collections.ObjectModel
5 System.Collections.Concurrent
53
6 System.Collections.Immutable
System.Collections.Concurrent
● BlockingCollection<T>
● ConcurrentBag<T>
● ConcurrentDictionary<TKey,TValue>
● ConcurrentQueue<T>
● ConcurrentStack<T>
54
Пространства имён
1 System.Collections
2 System.Collections.Specialized
3 System.Collections.Generic
4 System.Collections.ObjectModel
5 System.Collections.Concurrent
55
6 System.Collections.Immutable
System.Collections.Immutable
● ImmutableArray<T>
● ImmutableDictionary<TKey,TValue>
● ImmutableHashSet<T>
● ImmutableList<T>
● ImmutableQueue<T>
● ImmutableSortedDictionary<TKey,TValue>
● ImmutableSortedSet<T>
● ImmutableStack<T>
56
Резюме
57
Интерфейсы
58
Так ли прост массив?
★ System/Array.cs ➔ Реализует:
★ 3084 строки ◆ IEnumerable
★ 6 доп.классов ◆ ICollection
★ 2 структуры ◆ ICloneable
◆ IList
★ 44 метода
◆ IStructuralComparable
(без учёта перегрузок)
◆ IStructuralEquatable
59
Общее устройство массива в памяти
Ссылка на тип
(для ссылочных элементов)
Элементы массива
60
Общее устройство массива в памяти
Элементы массива
61
Boxing (упаковка) /Unboxing
(распаковка)
- процесс преобразования переменной из типа по значению в ссылочный.
62
Пространства имён
1 System.Collections
2 System.Collections.Specialized
3 System.Collections.Generic
4 System.Collections.ObjectModel
5 System.Collections.Concurrent
63
6 System.Collections.Immutable
System.Collections
● Stack
● BitArray
● Hashtable
● Queue
● ArrayList
64
● SortedList
System.Collections.Specialized
● BitVector32
● StringCollection
● HybridDictionary
● ListDictionary
65
System.Collections.Generic
● Dictionary<TKey, TValue>
● LinkedList<T>
● List<T>
● Queue<T>
● SortedDictionary<TKey, TValue>
● SortedSet<T>
● Stack<T>
66
System.Collections.Concurrent
● BlockingCollection<T>
● ConcurrentBag<T>
● ConcurrentDictionary<TKey,TValue>
● ConcurrentQueue<T>
● ConcurrentStack<T>
67
System.Collections.Immutable
● ImmutableArray<T>
● ImmutableDictionary<TKey,TValue>
● ImmutableHashSet<T>
● ImmutableList<T>
● ImmutableQueue<T>
● ImmutableSortedDictionary<TKey,TValue>
● ImmutableSortedSet<T>
● ImmutableStack<T>
68
Тестирование
(http://bit.ly/2019-11-18-test2)
69
Заполните, пожалуйста,
опрос о занятии по ссылке в чате
70
Ответы на вопросы
фото Ягур Алексей
Тимлид в YouDo
Aleksey Yagur
71