1/8
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
General term
Object это базовый класс для всех типов данных в .net. Сам по себе это ссылочный тип данных 8byte
В какой части памяти лежит
Heap
Какие методы имеет
ToString()
Equals()
GetType()
GetHashCode()
Определение методов
ToString() - возврат строкового представления объекта
Equals() - определяет равны ли два объекта по значению. Этот метод можно переопределять если мне требуется сравнивать объекты по значению. Сравнивает value types по значению.
GetType() - возвращает тип объекта
GetHashCode() - возвращает хеш-код объекта
HashCode?
целочисельное значение, служит для быстрого поиска объектов в коллекциях, таких как Dictionary, HashSet
У значимых типо хэш-код указывает на значение поля
У ссылочных на адрес объекта в heap
Dictionary?
Высоко эффективная коллекция, хранит данные в виде «ключ-значение»
heap
Dictionary<string, int> ages = new Dictionary<string, int>();
ages.Add("Alice", 30);
HashSet?
высоко эффективная коллекция для хранения ТОЛЬКО УНИКАЛЬНЫХ элементов в виде
heap
Не допускает дубликатов. Попытка добавления дубликата вернет false или будет проигнорирована
К элементам нельзя обратиться по индексу
Разрешает добавление одного значения null

Как происходит поиск по хеш-коду?
Вычисление хеша(GetHashCode()) → Определение ячейки(хеш-код преобразуется в номер ячейки таблицы) → программа сразу переходит в эту ячейку пропуская не подходящие
Чтобы понять, в какую ячейку памяти его положить, программа делит хеш-код на количество доступных ячеек (размер массива) и берет остаток от деления
Если разные ключи(элементы коллекции) указали на одну ячейку, программа сравнивает их с помощью Equals() и находит точное совпадение
==
Сравнивает примитивы по значению
Классы сравнивает по ссылке
Структуры не может сравнивать если самому не определять ==