This is because the CLR only defines a limited number of valid operands for the Add IL command. Valid entries are Int32, Int64, Single, and Double. Also IntPtr, but tends to be disabled in many languages.
Thus, adding a constant to a byte requires the byte to be converted to Int32 first. The result of the addition is Int32. What does not fit in bytes. If you do not use a larger hammer. This is great, the probability that you are overflowing with Byte.MaxValue is quite high.
Please note that there are languages โโthat are automatically applied, VB.NET is one of them. But it also automatically throws an OverflowException. Obviously not the one you are using, nor C #. This is an ideal choice, the overflow test is not so cheap.
source share