바이트에 부울 논리를 할 수없는 이유는 무엇입니까?
-
06-07-2019 - |
문제
C# (3.5)에서는 다음을 시도합니다.
byte byte1 = 0x00;
byte byte2 = 0x00;
byte byte3 = byte1 & byte2;
그리고 오류 132를 얻습니다. "유형 'int'를 '바이트'로 암시 적으로 변환 할 수 없습니다. 명시적인 변환이 존재합니다 (캐스트가 누락 되었습니까?). |에서도 마찬가지입니다 그리고 ^.
내가 뭘 잘못하고 있죠? 왜 INT에 대해 묻는가? 바이트에 부울 논리를 할 수없는 이유는 무엇입니까?
해결책
다양한 운영자가 선언되지 않았습니다 byte
- 두 피연산자 모두 홍보됩니다 int
, 그리고 결과는입니다 int
. 예를 들어, 추가 :
byte byte1 = 0x00;
byte byte2 = 0x00;
byte byte3 = byte1 + byte2; // Compilation error
복합 할당은 작동합니다.
byte1 += byte2;
거기가 있었다 최근 SO 질문에 대한 질문입니다. 나는 이것이 특히 비트 운영에 특히 영향을 미치며 결과는 항상 같은 크기 여야하며 논리적으로 완전히 유효한 작업입니다.
해결 방법으로 결과를 바이트로 다시 캐스팅 할 수 있습니다.
byte byte3 = (byte) (byte1 & byte2);
다른 팁
바이트 (및 짧은) 유형은 해당 연산자를 구현하지 않기 때문에
사양을 참조하십시오 : 4.1.5
제휴하지 않습니다 StackOverflow