首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# += 運算符深度解析:類型轉換規則與 Java 差異

     編輯:關於C語言

C# 複合賦值運算符 `+=` 的類型轉換規則比 Java 更嚴格,編譯期即可攔截隱式轉換風險。

規則核心

只有當 `x op y` 和 `x = y` 皆合法時,`x op= y` 才合法。

案例 1:數值類型隱式轉換

byte b = 0;
int i = 1;
b += i; // CS0266:無法將 int 隱式轉換為 byte

Java 運行時才發現數據截斷,C# 編譯期直接報錯。

案例 2:物件與字串相加

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)。

設計啟示

  • C# 編譯期強類型檢查避免運行時驚喜
  • 複合賦值不單是語法糖,更是類型安全守門員
  • 跨語言遷移時需注意運算符語義差異
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved