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

C# 加法運算子深度解析:數值、列舉、字串、委派四大語意與 IEEE 754 規則

     編輯:關於C語言

加法運算子 + 在 C# 中經過大量多載,支援數值、列舉、字串、委派四大類型體系,各具獨特語意。

數值加法:預定義運算子與 IEEE 754

IEEE 754 特殊值規則(浮點數)

表 7-2 定義所有組合:

  • x + y 同號無限大 → 同號無限大
  • +∞ + (-∞) → NaN
  • 有限值 + 0 → 有限值
  • 結果太小無法表示 → 同號 0
  • 含 NaN → NaN

列舉加法


E operator +(E x, U y); // U 為 E 的底層型別
E operator +(U x, E y);
// 等價於 (E)((U)x + (U)y)

範例:Weekday.Sunday + 6 → Weekday.Saturday(底層值 0+6=6)。

字串串接


string operator +(string, string);
string operator +(string, object);
string operator +(object, string);
// "Welcome" + " to you" → "Welcome to you"

注意:null + "abc" → "abc",非丟擲例外。

委派合併


D operator +(D x, D y); // D 為委派型別
// x 為 null → 回傳 y;y 為 null → 回傳 x
// 否則回傳新委派,呼叫串列包含 x 與 y 的呼叫清單

程式碼驗證


enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }
Weekday d1 = Weekday.Sunday, d2 = Weekday.Saturday;
Weekday d3 = d1 + 6; // 6
Console.WriteLine(d3); // 輸出 6 (Saturday)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
運算子簽章適用型別
int operator +(int, int)int
uint operator +(uint, uint)uint
long operator +(long, long)long
ulong operator +(ulong, ulong)ulong
float operator +(float, float)float
double operator +(double, double)double
decimal operator +(decimal, decimal)decimal