偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

C#操作符重載是什么?

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

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

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

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

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

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

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

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

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

如時實現(xiàn)C#操作符重載。

先寫關(guān)鍵詞public和static,后跟返回類型,后跟operator關(guān)鍵詞,后跟要聲明的操作符符號,***在對一對圓括號中添加恰當?shù)膮?shù)。

如下例中的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相加結(jié)果  
  9. Hour hrSum = hrValue1 + hrValue2;  
  10.  
  11. //得到Hour+Int的結(jié)果  
  12. Hour hrSumInt = hrValue1 + 10;  
  13.  
  14. //得到Int+Hour的結(jié)果  
  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. //此構(gòu)造函數(shù)根據(jù)int值創(chuàng)建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的,操作永遠不具有多態(tài)性,  
  47.  
  48. 面且不能使用virtual、abstract、override或者sealed修飾符。  
  49.  
  50. 二元操作符(比如+)有兩個顯式參數(shù);一元操作符有一個顯式的參數(shù)  
  51.  
  52. 我們有了public Hour(int iValue)構(gòu)造函數(shù),就可以將一個int與Hour相加,只是首先要將int轉(zhuǎn)換成為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,必須聲明一個二元操作符+,它的***個參數(shù)是Hour,第二個參數(shù)是一個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. //構(gòu)造函數(shù)  
  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. //==操作符是二元操作符,必須帶有兩個參數(shù)  
  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. //輸出重載后的結(jié)果  
  39.  
  40. Console.WriteLine("Hu++ = {0}", hu.iValue);  
  41. //C#操作符重載  
  42.  
  43. ++hu;  
  44. //輸出重載后的結(jié)果  
  45.  
  46. Console.WriteLine("Hu++ = {0}", hu.iValue);  
  47.  
  48. Console.ReadKey();  
  49. }  

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

【編輯推薦】

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

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# 操作符

2009-08-12 12:46:11

C#運算符重載

2010-02-05 10:30:02

C++操作符重載

2010-02-03 10:23:47

C++操作符重載

2009-08-21 09:30:05

is和as操作符

2009-08-19 17:38:17

C# 操作符分類

2009-08-19 17:13:15

C# 操作符基礎(chǔ)知識

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技術(shù)棧公眾號