У меня есть следующий код С#:
byte rule = 0;
...
rule = rule | 0x80;
который вызывает ошибку:
Невозможно неявно преобразовать тип 'int' в 'byte'. Явное преобразование существует (вы пропускаете листинг?)
[Обновление: первая версия вопроса была неправильной... Я неправильно прочитал вывод компилятора]
Добавление роли не выполняет:
rule = rule | (byte) 0x80;
Мне нужно записать его как:
rule |= 0x80;
Это просто странно. Почему оператор |=
не отличается от оператора |
?
Есть ли другой способ сообщить компилятору относиться к константе как к байту?
@Giovanni Galbo: да и нет. Код относится к программированию флэш-памяти во внешнем устройстве и логически представляет один байт памяти. Я мог бы наложить его позже, но это показалось более очевидным. Наверное, мое наследие C проявляется слишком много!
@Jonathon Holland: синтаксис "как" выглядит более аккуратным, но, к сожалению, он не работает... он производит:
Оператор as должен использоваться с ссылочным типом или типом с нулевым значением ('byte' - тип значения, не допускающего nullable)