t defined as type Int32
Yup, because the operator |(like most operators) is not defined for byte- bytes are increased to values int. (For details, see Section 7.11.1 of the C # 4 Specification.)
But, considering that you want to compare only with 0, anyway.
Personally, I will simply write it as:
return bytes[0] != 0 && bytes[1] != 0 && bytes[2] != 0;
Or even:
return (bytes[0] != 0) && (bytes[1] != 0) && (bytes[2] != 0);
.