C# 複合賦值運算符 `+=` 的類型轉換規則比 Java 更嚴格,編譯期即可攔截隱式轉換風險。
只有當 `x op y` 和 `x = y` 皆合法時,`x op= y` 才合法。
byte b = 0;
int i = 1;
b += i; // CS0266:無法將 int 隱式轉換為 byte
Java 運行時才發現數據截斷,C# 編譯期直接報錯。
string s = "str: ";
object obj = (Expression<Func<int, int>>)(x => x + 1);
s += obj; // OK:string += object
obj += s; // OK:object += string(編譯/運行均正常)
Java 早期禁止 `Object += String`,後在 JDK 7 移除限制(Changeset f09d6a3521b1)。