문제

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top