Поскольку он равен единице.
Значения VB6 - это 16-разрядные значения, где 0 равно false, а любое ненулевое значение - true, но для чего-то, установленного на true, установлено значение -1 (0xFFFF).Таким образом, множество комбинаций bool с числами хорошо работает с VB6, потому что x AND TRUE
дает x
, x OR FALSE
дает x
, x AND FALSE
дает FALSE
и так далее, с той же логикой для побитовогои логические операторы.К сожалению, это также означает, что 4 AND 2
ложно, несмотря на то, что это TrueThing AND OtherTrueThing
, поэтому осторожные кодеры VB6 не слишком полагались на это, но использовали CBool
, чтобы заставить значение быть либо 0, либо -1.
Как правило, у нас есть выбор: использовать естественный размер станка для скорости обработки станка по сравнению с использованием одного байта, поскольку он является наименьшей адресуемой единицей и, следовательно, дает преимущество в размере.В те времена, когда естественный размер на 16-битных компьютерах был, конечно, 16-битным, баланс был больше в пользу перехода на натуральный размер, чем сегодня, когда у нас 32-битные и 64-битные машины.Visual Basic 1.0 работал на DOS и Windows 3.0, которые могли работать на 16-разрядных процессорах Intel 80286, так что это не такой уж странный выбор.
В мире COM у нас есть VARIANT_BOOL, что является еще одним способом сказать«bool, сделано так, как это делает VB6», чтобы обеспечить совместимость между языками.Самая близкая вещь в C # будет либо short
, либо ushort
, и если бы мы заботились только о C #, мы могли бы выбрать либо.Во-первых, мы склонны использовать значения со знаком больше, чем без знака, что указывает на short
, но также ushort
не является CLS-совместимым типом, и вряд ли есть смысл вводить несовместимость с другими языками .NET при получении.совместимость с COM!Следовательно, short
является очевидным выбором.