然而,当您添加bytes 时,结果是int,例如
byte a = 100;
byte b = 200;
var result = a + b; // result == 300
Run Code Online (Sandbox Code Playgroud)
由于 和a都b在0..255范围内,因此结果将在0..510范围内并且不可能出现整数溢出。但你想要byte result,这就是你需要演员的原因:
byte result = (byte) (a + b);
Run Code Online (Sandbox Code Playgroud)
在这里,.net 可以显示两种类型的反应:
256 -> 0。257 -> 1我们想要第二种选择,这就是原因unchecked:
byte result = unchecked((byte) (a + b));
Run Code Online (Sandbox Code Playgroud)