See C# language specification:
7.6.12 The checked and unchecked operators
The following operations are affected by the overflow checking context
established by the checked and unchecked operators and statements:
...
• Explicit numeric conversions (§6.2.1) from one integral type to
another integral type, or from float or double to an integral type.
When one of the above operations produce a result that is too large to
represent in the destination type, the context in which the operation
is performed controls the resulting behavior:
...
• In an unchecked
context, the result is truncated by discarding any high-order bits
*that do not fit in the destination type*.
For non-constant expressions (expressions that are evaluated at
run-time) that are not enclosed by any checked or unchecked operators
or statements, the default overflow checking context is unchecked
unless external factors (such as compiler switches and execution
environment configuration) call for checked evaluation.
This - (byte)
makes an explicit numeric conversion from int
, that by default runs in unchecked context, hence, truncates the result.