Binary Studio Academy 2016. Data structures and LINQ
1. for Binary Studio Academy
Beseda Dmitriy
skype: dmitriy.b_binary
email: dmitriy.beseda@binary-studio.com
Data Structures and
LINQ
binary-studio.com
2. С чего все начинается
“В унифицированной системе
типов C# все типы,
предопределенные и
пользовательские, ссылочные
типы и типы значений,
наследуют непосредственно или
косвенно от Object. Переменным
типа object можно назначать
значения любых типов.” (MSDN)
Методы:
- Equals
- Finalize
- GetHashCode
- GetType
- MemberwiseClone
- ReferenceEquals
- ToString
3. Тип ссылки и значения
Типы по значению
- Целочисленные значения(Int,
byte, char, uint ...)
- Числа с плавающей запятой (float,
double)
- Boolean
- Структуры
- Перечисления (enum)
Ссылочный тип
- class
- interface
- delegate
- dynamic
- Object
- string
5. Тип ссылки и значения
Тип по занчению
Указатель на
ссылочный тип
Ссылочный тип
Стек Куча
6. Тип ссылки и значения
Упаковка - используется для хранения типов значений в куче со сбором мусора.
Распаковка является явным преобразованием из типа object в тип значения или
из типа интерфейса в тип значения, реализующего этот интерфейс.
int i = 123; // a value type
object o = i; // boxing
int j = (int) o; // unboxing
9. Array
- Происходит от System.Array
- IEnumerable, IList, ICollection
- Данные должны быть одного типа
- Размер фиксированый
- Прямой доступ в память
- Массивы могут быть двумерными и более
11. Collection<T>
- Удобно использовать когда нужно
реагировать на изменение коллекции
путем переопределения методов
ClearItems, InsertItems, RemoveItems,
SetItems.
- Доступ по индексу.
- Разрешает дублирование.
12. LinkedList<T>
- Нет индекса. Текущий элемент имеет доступ к
следующему и предыдущему элементам
- Пользователь может удалить узлы и повторно их
вставить — как в тот же самый список, так и в
другой список. В результате в куче не размещается
ни одного дополнительного объекта.
- Более быстрые операции вставки и удаления.
- Нет прямого доступа.
13. Dicitionary<TKey, TValue>
- Коллекция состоит из ключей и значений
- Ключ менять нельзя
- Быстрый доступ к элементу по ключу
(используется hash-таблица)
- Ключ должен быть уникальным
- Тип ключа может быть числом, строкой,
объектом и т.д.
14. LINQ
Language INtegrated Query
LINQ Data Sources
LINQ in ADO.NET
LINQ
to XML
LINQ
to Objects
LINQ
to DataSet
LINQ
to Entities
LINQ
to SQL
LINQ
to Nhibernate
15. LINQ
- Представляет собой многочисленные
расширяющие методы.
- Имеет 2 синтаксиса.
- Может использовать анонимные типы.
- Отложенное выполнение.
Ковариантность для массивов позволяет неявно преобразовывать массив производного типа большей глубины наследования в массив производного типа меньшей глубины наследования. Однако такая операция не является типобезопасной
Упаковка - используется для хранения типов значений в куче со сбором мусора. Упаковка представляет собой неявное преобразование типа значения в тип object или в любой другой тип интерфейса, реализуемый этим типом значения. При упаковке типа значения в куче выделяется экземпляр объекта и выполняется копирование значения в этот новый объект.
Распаковка является явным преобразованием из типа object в тип значения или из типа интерфейса в тип значения, реализующего этот интерфейс. Операция распаковки состоит из следующих действий:
проверка экземпляра объекта на то, что он является упакованным значением заданного типа значения;
копирование значения из экземпляра в переменную типа значения.