Trong C# (3.5) tôi thử như sau:Tại sao tôi không thể thực hiện logic boolean trên byte?
byte byte1 = 0x00;
byte byte2 = 0x00;
byte byte3 = byte1 & byte2;
và tôi nhận được Lỗi 132:. "Không thể ngầm chuyển đổi loại 'int' thành 'byte' Một chuyển đổi rõ ràng tồn tại (là bạn thiếu một dàn diễn viên?) ". Điều tương tự cũng xảy ra với | và ^.
Tôi đang làm gì sai? Tại sao nó hỏi tôi về ints? Tại sao tôi không thể làm logic boolean trên byte?
Tất cả số học trong .NET dựa trên int. Có một câu hỏi liên quan với một số cuộc thảo luận khá. Nó không phải là một câu trả lời cho câu hỏi của bạn, nhưng bạn có thể nhận được một số cái nhìn sâu sắc trong cách C# giao dịch với số học nói chung: http://stackoverflow.com/questions/941584/byte-byte-int-why –
"Bởi vì C# không phải là hoàn hảo ngôn ngữ ", là cách tôi sẽ giải thích điều này. Đây là một trong những mụn cóc của nó (và so với các ngôn ngữ khác, C# có ít nhất là mụn cóc ít nhất và ít gây hại nhất ...) –