Внимание! Запись предназначена для тех, кто знает или изучает язык программирования C#.
Заметил интересную особенность, связанную с типом bool.
Код простой, но с unsafe.
Тема
27 8K
9
GeneralElConsul, нет. В памяти в NET большинство переменных, даже маленьких, будут по 4 байта.
Но первые 3 для bool не используются, при копировании переменной они даже не копируются. А последний байт копируется. И он никуда не пропадёт.
Да, это уже вспомнил про типы в стеке вычислений.
Isstrebitel:
GeneralElConsul, это ещё в C была такая логика - 0 - false, остальное - true. В C#, похоже, тоже, проверяет не конкретный бит, а, как в C, всё число.
Ок, буду знать.
24
GeneralElConsul, это ещё в C была такая логика - 0 - false, остальное - true. В C#, похоже, тоже, проверяет не конкретный бит, а, как в C, всё число.
24
раскрыть
GeneralElConsul, нет. В памяти в NET большинство переменных, даже маленьких, будут по 4 байта.
Но первые 3 для bool не используются, при копировании переменной они даже не копируются. А последний байт копируется. И он никуда не пропадёт.
На второе сейчас напишу.
9
Isstrebitel:
И туда мы пишем любое число от 0 до 255. Если оно равно 0 - false, не равно - true.
Не конкретный бит определяет значение true или false? Не верю. Что покажет при числе 4?
29
Ничего нового, да и собственно зачем это? не понятно...
А вот сделать альтернативное хранилище булов, которые реально будут использовать 1 бид это уже что-то более важное
24
Это да. На Википедии видел сравнение C# и Java, у C# там есть элементы C++, которых у Java нету.
Я о том, что C# близок к Java по концепции виртуальной машины. А C++ чуть-чуть отдельно, но ближе к C#, чем к Java.
24
В C++ знал и использовал. Но это не C++, тут типизация строже. В раннем C вроде даже bool не было, читал где-то.
А в C# не то, что неявные - даже явные преобразования int и bool не всегда разрешены.
И вообще типизация строгая и не позволяет такого. По идее. С unsafe и не такое возможно.
Насчёт наследника - не очень то он наследник. Синтаксис похож, а так ближе к Java. Ну и применение и "внутреннее устройство" C++ и C# совершенно разные. Хотя есть C++ для платформы NET, что-то среднее =)

Так что да, на C++ это обычно, но на C# такое нечасто применяют.