Я следующий C# код:C# числовые константы
byte rule = 0;
...
rule = rule | 0x80;
который производит ошибку:
Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?)
[Update: первая версия этого вопроса была неправильно ... Я неправильно интерпретировал вывод компилятора ]
Добавление бросание не решить эту проблему:
rule = rule | (byte) 0x80;
мне нужно написать:
rule |= 0x80;
Который только кажется странным. Почему оператор |=
отличается от оператора |
?
Есть ли другой способ сообщить компилятору относиться к константе как к байту?
@ Джованни Galbo: да и нет. Код относится к программированию флэш-памяти во внешнем устройстве и логически представляет один байт памяти. Я мог бы наложить его позже, но это показалось более очевидным. Наверное, мое наследие C проявляется слишком много!
@ Джонатон Holland: свойство «как» синтаксис выглядит аккуратнее, но, к сожалению, похоже, не работает ... он производит:
The as operator must be used with a reference type or nullable type ('byte' is a non-nullable value type)
Как вы говорите, все ints - int32, не указывает ли спецификация языка (или CLR) эту гарантию? – Eloff 2010-05-04 22:59:09