根据C#语言规范4.0第7.17.2节:7.17.2 复合赋值x op= y 形式的运算是这样来处理的:应用重载决策(第 7.2.4 节),就好比运算的书写形式为 x op y。然后,如果选定的运算符的返回类型可“隐式”转换为 x 的类型,则运算按 x = x op y 计算,但 x 只计算一次否则,如果选定运算符是预定义的运算符,选定运算符的返回类型可“显式”转换为 x 的类型,并且 y 可“隐式”转换为 x 的类型或者该运算符是移位运算符,则运算按 x = (T)(x op y) 计算(其中 T 是 x 的类型),但 x 只计算一次。否则,复合赋值无效,且发生绑定时错误。t += 1符合第2条。而t = t + 1会编译报错是因为:t + 1运算是一个byte加上一个int,因此它的结果是一个int,将一个大小未知的int值直接赋给一个byte类型的变量是不允许的。