成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#操作符重載的那點事兒

開發 后端
C#操作符重載是什么呢?C#操作符重載具體的體現又是什么呢?C#操作符重載應用的實例如何呢?那么本文向你詳細講解。

C#操作符重載是什么?

是指允許用戶使用用戶定義的類型編寫表達式的能力。

例如,通常需要編寫類似于以下內容的代碼,以將兩個數字相加。很明顯,sum 是兩個數字之和。

int i = 5;
int sum = i + j;

如果可以使用代表復數的用戶定義的類型來編寫相同類型的表達式,那當然是***不過了:

Complex i = 5;
Complex sum = i + j;

運算符重載允許為用戶定義的類型重載(即指定明確的含義)諸如“+”這樣的運算符。如果不進行重載,則用戶需要編寫以下代碼:

Complex i = new Complex(5);
Complex sum = Complex.Add(i, j);

此代碼可以很好地運行,但 Complex 類型并不能象語言中的預定義類型那樣發揮作用。

在我看來是操作符重載是讓struct、class、Interface等能夠進行運算。

如時實現C#操作符重載。

先寫關鍵詞public和static,后跟返回類型,后跟operator關鍵詞,后跟要聲明的操作符符號,***在對一對圓括號中添加恰當的參數。

如下例中的struct Hour中的public static Hour operator+ (Hour lhs,Hour rhs){...}

C#操作符重載方法:

1、編寫操作符重載方法。

2、實例化后,進行操作符運算

下邊用C#操作符重載代碼進行說明:

  1. class Program  
  2. {  
  3. static void Main(string[] args)  
  4. {  
  5. Hour hrValue1 = new Hour(10);  
  6. Hour hrValue2 = new Hour(20);  
  7.  
  8. //2、得到兩個Hour相加結果  
  9. Hour hrSum = hrValue1 + hrValue2;  
  10.  
  11. //得到Hour+Int的結果  
  12. Hour hrSumInt = hrValue1 + 10;  
  13.  
  14. //得到Int+Hour的結果  
  15. Hour hrIntSum = 11 + hrValue2;  
  16. Console.WriteLine("hrValue1 +  hrValue2 = {0}", hrSum.iValue);  
  17. Console.WriteLine("hrValue1 +  10  = {0}", hrSumInt.iValue);  
  18. Console.WriteLine("11 +  hrValue2  = {0}", hrIntSum.iValue);  
  19. Console.ReadKey();  
  20. }  
  21. struct Hour  
  22. {  
  23. private int value;  
  24. //此構造函數根據int值創建Hour類 ,C#操作符重載 
  25. public Hour(int iValue)  
  26. {  
  27. this.value = iValue;  
  28. }  
  29. //定義一個屬性,便于取用value值  
  30. public int iValue  
  31. {  
  32. get 
  33. {  
  34. return value;  
  35. }  
  36. } //C#操作符重載
  37. //1、聲明一個二元操作符,將兩個Hour類加到一起   
  38. public static Hour operator+ (Hour lhs,Hour rhs)  
  39. {  
  40. return new Hour(lhs.value + rhs.value);  
  41. }  
  42.  
  43. /*  
  44. 操作符是public的。所有操作符都必須是public的  
  45.  
  46. 操作符是static的。所有操作符都必須是static的,操作永遠不具有多態性,  
  47.  
  48. 面且不能使用virtual、abstract、override或者sealed修飾符。  
  49.  
  50. 二元操作符(比如+)有兩個顯式參數;一元操作符有一個顯式的參數  
  51.  
  52. 我們有了public Hour(int iValue)構造函數,就可以將一個int與Hour相加,只是首先要將int轉換成為Hour  
  53.  
  54. hour a= ;  
  55.  
  56. int b= ;  
  57.  
  58. Hour sum=a+new Hour(b);  
  59.  
  60. 雖然上述代碼完全有效,但相較于讓一個Hour和一個int直接相加它即不清晰也不準確。  
  61.  
  62. 為了使Hour可以+ int,必須聲明一個二元操作符+,它的***個參數是Hour,第二個參數是一個int。  
  63.  C#操作符重載
  64.  */ 
  65. public static Hour operator+ (Hour lhs,int rhs)  
  66. {  
  67. return lhs + new Hour(rhs);  
  68. }  
  69. //使一個int 可以+hour。  
  70. public static Hour operator +(int lhs, Hour rhs)  
  71. {  
  72. return new Hour(lhs)+rhs;  
  73. }  
  74. }  

C#操作符重載示例2:

  1. struct Hour  
  2. {  
  3. public int iValue;  
  4. //構造函數  
  5. public Hour(int initialValue)  
  6. {  
  7. this.iValue = initialValue;  
  8. }  
  9. //1、定義操作符重載(一元操作符)  
  10. public static Hour operator ++ (Hour huValue)  
  11. {  
  12. huValue.iValue++;  
  13. return huValue;  
  14. }  //C#操作符重載
  15.  
  16. //==操作符是二元操作符,必須帶有兩個參數  
  17. public static bool operator==(Hour lhs,Hour rhs)  
  18. {  
  19. return lhs.iValue == rhs.iValue;  
  20. }  
  21. public static bool operator!=(Hour lhs,Hour rhs)  
  22. {  
  23. return lhs.iValue != rhs.iValue;  
  24. }  
  25. }  
  26.  
  27. //++操作符有前綴和后綴的形式,C#能智能地為前綴后后綴使用同一個操作符。  
  28.  
  29. static void Main(string[] args)  
  30. {  
  31. //2、實例化類  ,C#操作符重載
  32.  
  33. Hour hu = new Hour(10);  
  34. //3、  
  35. //操作符重載  
  36.  
  37. hu++;  
  38. //輸出重載后的結果  
  39.  
  40. Console.WriteLine("Hu++ = {0}", hu.iValue);  
  41. //C#操作符重載  
  42.  
  43. ++hu;  
  44. //輸出重載后的結果  
  45.  
  46. Console.WriteLine("Hu++ = {0}", hu.iValue);  
  47.  
  48. Console.ReadKey();  
  49. }  

C#操作符重載的基本內容就向你介紹到這里,希望對你了解和學習C#操作符重載有所幫助。

【編輯推薦】

  1. C# 操作XML的全過程實例淺析
  2. C#操作xml文件實例詳解
  3. C#操作XML文件學習綜合體會
  4. C#操作符重載學習的一點總結
  5. C#操作符重載應用的一點體會
責任編輯:仲衡 來源: 博客園
相關推薦

2009-08-18 18:06:54

C#操作符重載

2009-08-18 17:42:12

C#操作符重載

2009-08-18 17:20:17

C#操作符重載

2009-08-18 17:34:25

C#操作符重載應用

2011-05-23 14:10:00

2009-08-19 17:26:28

C# 操作符

2009-07-14 18:34:22

Jython操作符重載

2009-08-19 17:20:22

C# 操作符

2010-02-05 10:30:02

C++操作符重載

2009-08-12 12:46:11

C#運算符重載

2010-02-03 10:23:47

C++操作符重載

2009-08-21 09:30:05

is和as操作符

2009-08-19 17:13:15

C# 操作符基礎知識

2009-08-19 17:38:17

C# 操作符分類

2009-08-19 16:59:25

C# 操作符

2009-08-21 09:57:08

C#操作符IS與AS

2009-08-19 17:33:35

C# 操作符

2024-05-13 00:00:00

C#操作符代碼

2023-12-04 11:02:53

C++空類

2010-01-28 11:16:28

C++操作符
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人午夜精品 | 亚洲免费精品一区 | 涩涩视频在线观看 | 亚洲成人播放器 | 婷婷久久五月天 | 国产亚洲精品美女久久久久久久久久 | 亚洲成人一区二区三区 | 欧美 日韩 在线播放 | av天天澡天天爽天天av | 女同久久另类99精品国产 | 亚洲午夜视频在线观看 | 美女视频一区二区 | 日韩精品一区二区三区免费视频 | 91久久国产综合久久 | 日韩一区二区三区av | 国产成人免费在线 | 成人av大全| 午夜在线电影网 | 国产日韩一区 | 成人在线一级片 | 欧美日韩国产一区二区三区 | 国产在线一区二区 | 四虎影院欧美 | 日本一区二区三区在线观看 | 亚洲成av人片在线观看无码 | 九九导航 | www.亚洲.com | 一级黄在线观看 | 日韩久久精品视频 | 伊人免费视频二 | 一级看片免费视频囗交动图 | 国产区在线视频 | 欧美一级二级视频 | 国产精品国产精品 | 国产高清精品网站 | www.国产精| 亚洲国产成人精品女人久久久 | h片在线免费观看 | 亚洲三级国产 | 亚洲精品视频久久 | 国产超碰人人爽人人做人人爱 |