C#: поместить байт в байт? Выкуси!
От: Kolesiki  
Дата: 20.07.22 17:38
Оценка: 3 (1) +1 -11 :)
Как-то особо по работе не сталкивался, но тут надо было использовать бинарный протокол. Как всякий адекватный чел, насоздавал enum'ов, причём с конкретизированным типом, а-ля "enum ProtoCmd : byte". И при первом же использовании "byte b = ProtoCmd.Read" получил граблями! НЕ УМЕЕТ цешарп из байта делать байт! Равно как и "ProtoCmd z = 0x01" тоже фэйлит, но уже потому, что криворылый C# не может даже байтовую константу объявить! Только кастингом (byte)0x01. Что опять же, НЕ РАБОТАЕТ в "ProtoCmd z = (byte)0x01" — ты обязан явно делать "ProtoCmd z = (ProtoCmd)0x01".

По-моему, такой головожопый дизайн ничего не прибавляет в плане надёжности, зато активно выбешивает своими ограничениями. И если "ProtoCmd z = 0x01" ещё можно понять (т.к. M$ считает тебя дебилом и не доверяет присваивать в enum значения напрямую), то отвергать "byte b = ProtoCmd.Read" — это уже вообще за гранью!! Я понимаю INT нельзя засунуть в байт, но байт-то в байт можно! Есть какое-то разумное объяснение этому идиотизму?

Не раз удостоверялся — "защита от дурака" против дурака как раз не работает, а умным доставляет столько гемора, что лучше бы эти всхлипперты, торгерсены и хэйлсберги сидели в вижуалбейсике и не лезли во взрослые языки!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.