日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#中的运算符重载

發布時間:2025/3/15 C# 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#中的运算符重载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C# 允許用戶自定義類型通過使用 operator 關鍵字定義靜態成員函數來重載運算符。

注意:

  • 必須用public修飾,必須是類的靜態的方法。
  • 重載相等運算符(==)時,還必須重載不相等運算(!=)。
  • < 和 > 運算符以及 <= 和 >= 運算符也必須成對重載。


可以重載的運算符:

  • 可以重載的一元運算符:+、-、!、~、++、--、true 和 false
  • 可以重載的二進制運算符:+, -, *, /, %, &, |, ^, <<, >>
  • 可以重載的比較運算符:==, !=, <, >, <=, >=

不能重載的運算符:

  • &&, || 條件邏輯運算符不能重載,但可使用能夠重載的 & 和 | 進行計算。
  • []不能重載數組索引運算符,但可定義索引器。
  • ()不能重載轉換運算符,但可定義新的轉換運算符(請參見 explicit 和 implicit)。
  • +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=賦值運算符不能重載,但 += 可使用 + 計算
  • =、.、?:、->、new、is、sizeof 和 typeof 不能重載這些運算符。

注意:

  • 若要在自定義類中重載運算符,您需要在該類中創建具正確簽名的方法。該方法必須命名為“operator X”,其中 X 是正在重載的運算符的名稱或符號。
  • 一元運算符具有一個參數,二元運算符具有兩個參數。
  • 在每種情況下,參數的類型必須與聲明運算符的類或結構的類型相同。

?下面是個人寫的一小段練習代碼:

1 /* 設計一個復數類(Complex), 2 * 包含兩個字段(實部x和虛部y), 3 * 對運算符進行重載,實現兩個 4 * 復數的加法和減法運算、 5 * 以及判斷兩個復數是否一致 6 */ 7 8 using System; 9 using System.Collections.Generic; 10 using System.Linq; 11 using System.Text; 12 13 namespace homeWork4 14 { 15 class Program 16 { 17 static void Main(string[] args) 18 { 19 Complex com1, com2, com3; 20 com1 = new Complex(1, 4); 21 com2 = new Complex(2, 6); 22 com3 = new Complex(); 23 com3 = com1 + com2; 24 Console.WriteLine(com1 + " + " + com2 + " = " + com3); 25 com3 = com1 - com2; 26 Console.WriteLine(com1 + " - " + com2 + " = " + com3); 27 if (com1 == com2) 28 Console.WriteLine("com1和com2一致"); 29 else 30 Console.WriteLine("com1和com2不一致"); 31 Console.ReadKey(); 32 } 33 } 34 35 class Complex 36 { 37 public double x, y; 38 public Complex() 39 { x = y = 0; } 40 public Complex(double x, double y) 41 { 42 this.x = x; 43 this.y = y; 44 } 45 public static Complex operator +(Complex comp1, Complex comp2) 46 { 47 Complex comp = new Complex(); 48 comp.x = comp1.x + comp2.x; 49 comp.y = comp1.y + comp2.y; 50 return comp; 51 } 52 public static Complex operator -(Complex comp1, Complex comp2) 53 { 54 Complex comp = new Complex(); 55 comp.x = comp1.x - comp2.x; 56 comp.y = comp1.y - comp2.y; 57 return comp; 58 } 59 public override string ToString() 60 { 61 return "(" + x + "," + y + ")"; 62 } 63 public static bool operator ==(Complex c1, Complex c2) 64 { 65 //將c1對象轉為object再進行判斷 66 //這里的object.Equals(c1, null)也可以寫成 67 //c1 as object == null 68 if (object.Equals(c1, null) || object.Equals(c2, null)) 69 { 70 return object.Equals(c1, c2); 71 } 72 return c1.x == c2.x && c1.y == c2.y; 73 } 74 75 public static bool operator !=(Complex c1, Complex c2) 76 { 77 if (object.Equals(c1, null) || object.Equals(c2, null)) 78 { 79 return !object.Equals(c1, c2); 80 } 81 return c1.x != c2.x || c1.y != c2.y; 82 } 83 }; 84 }

?

作者:耑新新,發布于??博客園??

轉載請注明出處,歡迎郵件交流:zhuanxinxin@foxmail.com

轉載于:https://www.cnblogs.com/Amedeo/p/6087412.html

總結

以上是生活随笔為你收集整理的C#中的运算符重载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。