CLR via C#. Глава 5.3. Ссылочные и значимые типы. Тождество, равенство, GetHashCode, dynamic

CLR via C#. Глава 5.3. Ссылочные и значимые типы. Тождество, равенство, GetHashCode, dynamic

CODE BLOG

5 лет назад

8,387 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

Руслан Слободин
Руслан Слободин - 24.07.2023 23:25

Спасибо за разборы. 24.07.2023. Читаю главу из книги, затем смотрю твой разбор. Очень хорошо получается.

Ответить
Uzbek_Said
Uzbek_Said - 04.07.2023 15:46

is it true: var works as dynamic?

Ответить
Дмитрий Ступин
Дмитрий Ступин - 20.03.2023 07:14

Последний пример про хранение хэшей в базе. Разве в Identity сейчас нет это реализовано?

Ответить
Vladislav S
Vladislav S - 16.02.2022 23:19

Хороший урок !
Спасибо за труд

Ответить
Ivan Omelchenko
Ivan Omelchenko - 06.09.2021 09:32

почему нельзя использовать change

Ответить
raiver
raiver - 11.08.2021 14:39

3

Ответить
Cryvage
Cryvage - 11.06.2021 00:11

Если Халк поднял Тора, а Тор держит в руках Мьёльнир, значит, по закону транзитивности, Халк поднял Мьёльнир.

Ответить
Ivan Omelchenko
Ivan Omelchenko - 23.03.2021 13:28

спасибо за стримм!!

Ответить
Ivan Omelchenko
Ivan Omelchenko - 23.03.2021 09:54

всем привет

Ответить
Ivan Omelchenko
Ivan Omelchenko - 02.11.2020 13:47

уже понедельник

Ответить
Advaita Kṛṣṇa Dāsa
Advaita Kṛṣṇa Dāsa - 18.06.2020 11:46

Прекрати отвелкаться :)

Ответить
Artem Lyubivoy
Artem Lyubivoy - 24.10.2019 17:33

Спасибо.
Как называется видео, где можно посмотреть про хеш таблицы. Не нашел.

Ответить
Эвген
Эвген - 20.08.2019 08:34

Не понял зачем нужен на практике GetHashCod куда это применять.

Ответить
Orimaha
Orimaha - 12.08.2019 08:23

Спасибо за твои труды)

Ответить
Anatoliy
Anatoliy - 11.08.2019 13:26

Вопросики:
1. Когда мы сравниваем значимые типы через Equals, то при равных значениях может быть false например:

byte b = 1;
int i = 1;

Console.WriteLine(b.Equals(i)); // false
Console.WriteLine(i.Equals(b)); // true

Вижу тут правила, адекватно работать будет только в 2 случаях если значения одинаковые :
1. Типы равны;
2. Сравнивать можно только из большего типа в меньший. Нарушается правила СИММЕТРИЧНОСТЬ

Вопрос: Сравнение ЗНАЧИМЫХ типов не желательно через Equals? Так как мы не можем переопределить Equals по правила равенства(рефлексивность, симметричность - идет нарушение симметричности, транзитивность и т.д. ), + еще ValueType Equals работает медленно из-за отражения. Остается вариант сравнения через оператор ==. Хоть я не видел кода оператора ==, выполняется правила равенства, возможно отсутствие отражение.
Вывод: сравнивать значимые типы которые нельзя переопределить int, byte, float и т.д. лучше через оператор ==, нежели через Equals. Правильно ?

2. Хоть я и ответил частично на текущий вопрос выше, с условием если вывод был правильный. Но зачем нам использовать Equsls если у нас есть оператор == ?.Почему мы стремимся сделать Equals равным оператору ==, или это одно и тоже ))) ?

Ответить