Size: a a a

var chat = new Chat();

2020 November 20

AK

Alex Kiev in var chat = new Chat();
Andrii Shcherbyna
Это некий хак с числовыми значениями. Будет невалидное значение после таких операций
нуууу
источник

AK

Alex Kiev in var chat = new Chat();
главное знать что делаешь )
источник

AS

Andrii Shcherbyna in var chat = new Chat();
Главное смотреть на условия контракта, которые подписываешь с галлерой/заказчиком. Чтобы потом тебе чек не прилетел
источник

AK

Alex Kiev in var chat = new Chat();
да никто такое не прописывает
источник

AS

Andrii Shcherbyna in var chat = new Chat();
(не принимай серьезно)
источник

B

Bogdan in var chat = new Chat();
Andrii Shcherbyna
Это некий хак с числовыми значениями. Будет невалидное значение после таких операций
Это не хак, это приведение типов
источник

AK

Alex Kiev in var chat = new Chat();
Bogdan
Это не хак, это приведение типов
это не приведение, это конвертация
источник

B

Bogdan in var chat = new Chat();
Andrii Shcherbyna
По-этому не советую играть с числовыми типами
Это поведение соответствует ecma334 насколько я помню ( давно не открывал спеку )
источник

AS

Andrii Shcherbyna in var chat = new Chat();
Конвертация) Под капотом оно просто лишние байты отрезает и с двоичной переводит в десятичную с того, что осталось
источник

AS

Andrii Shcherbyna in var chat = new Chat();
Но мораль басни такова, что эти тонкости оч важны и надо их знать
источник

B

Bogdan in var chat = new Chat();
Alex Kiev
это не приведение, это конвертация
А почему тогда на мсдне пишут что приведение
источник

AK

Alex Kiev in var chat = new Chat();
Bogdan
А почему тогда на мсдне пишут что приведение
англ язык?
источник

AS

Andrii Shcherbyna in var chat = new Chat();
По факту это неявная конвертация по спецификации, которая обернута в синтаксис явного приведения типов)
источник

AS

Andrii Shcherbyna in var chat = new Chat();
По-этому и говорю, что для числовых типов есть исключение
источник

AS

Andrii Shcherbyna in var chat = new Chat();
Так же само как
object a = 123;
Это вроде как тоже синтаксис приведения типов, но по факту под капотом происходит неявная упаковка инт значения в новый объект
источник

AS

Andrii Shcherbyna in var chat = new Chat();
И тут можно начинать играть в демагогию и закидывать друг друга определениями терминологии с разных ресурсов, которые могут друг другу противоречить
источник

B

Bogdan in var chat = new Chat();
Andrii Shcherbyna
И тут можно начинать играть в демагогию и закидывать друг друга определениями терминологии с разных ресурсов, которые могут друг другу противоречить
True
источник

AK

Alex Kiev in var chat = new Chat();
Andrii Shcherbyna
И тут можно начинать играть в демагогию и закидывать друг друга определениями терминологии с разных ресурсов, которые могут друг другу противоречить
да нет тут демагогии, сначала смотрим понятия, если не сходятся - как работает
источник

AS

Andrii Shcherbyna in var chat = new Chat();
Так как приведение доступно только в рамках наследования, то создатели .net для удобства обернули в один и тот же синтаксис две разные операции:
приведение - референс типы
преобразование - простые типы
Синтаксис один и тот же
А по факту там для простых типов вызываются методы ConvertTo, а для референс происходит реальное приведение по всем правилам ООП
источник

AK

Alex Kiev in var chat = new Chat();
Andrii Shcherbyna
Так как приведение доступно только в рамках наследования, то создатели .net для удобства обернули в один и тот же синтаксис две разные операции:
приведение - референс типы
преобразование - простые типы
Синтаксис один и тот же
А по факту там для простых типов вызываются методы ConvertTo, а для референс происходит реальное приведение по всем правилам ООП
не забывай что есть ещё implicit
источник