日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#操作符重載的那點事兒

C#操作符重載是什么?

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、根河網(wǎng)絡(luò)推廣、微信平臺小程序開發(fā)、根河網(wǎng)絡(luò)營銷、根河企業(yè)策劃、根河品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供根河建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com

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

例如,通常需要編寫類似于以下內(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. //2、得到兩個Hour相加結(jié)果
  8. Hour hrSum = hrValue1 + hrValue2;
  9. //得到Hour+Int的結(jié)果
  10. Hour hrSumInt = hrValue1 + 10;
  11. //得到Int+Hour的結(jié)果
  12. Hour hrIntSum = 11 + hrValue2;
  13. Console.WriteLine("hrValue1 +  hrValue2 = {0}", hrSum.iValue);
  14. Console.WriteLine("hrValue1 +  10  = {0}", hrSumInt.iValue);
  15. Console.WriteLine("11 +  hrValue2  = {0}", hrIntSum.iValue);
  16. Console.ReadKey();
  17. }
  18. struct Hour
  19. {
  20. private int value;
  21. //此構(gòu)造函數(shù)根據(jù)int值創(chuàng)建Hour類 ,C#操作符重載
  22. public Hour(int iValue)
  23. {
  24. this.value = iValue;
  25. }
  26. //定義一個屬性,便于取用value值
  27. public int iValue
  28. {
  29. get
  30. {
  31. return value;
  32. }
  33. } //C#操作符重載
  34. //1、聲明一個二元操作符,將兩個Hour類加到一起 
  35. public static Hour operator+ (Hour lhs,Hour rhs)
  36. {
  37. return new Hour(lhs.value + rhs.value);
  38. }
  39. /*
  40. 操作符是public的。所有操作符都必須是public的
  41. 操作符是static的。所有操作符都必須是static的,操作永遠不具有多態(tài)性,
  42. 面且不能使用virtual、abstract、override或者sealed修飾符。
  43. 二元操作符(比如+)有兩個顯式參數(shù);一元操作符有一個顯式的參數(shù)
  44. 我們有了public Hour(int iValue)構(gòu)造函數(shù),就可以將一個int與Hour相加,只是首先要將int轉(zhuǎn)換成為Hour
  45. hour a= ;
  46. int b= ;
  47. Hour sum=a+new Hour(b);
  48. 雖然上述代碼完全有效,但相較于讓一個Hour和一個int直接相加它即不清晰也不準確。
  49. 為了使Hour可以+ int,必須聲明一個二元操作符+,它的***個參數(shù)是Hour,第二個參數(shù)是一個int。
  50.  C#操作符重載
  51.  */
  52. public static Hour operator+ (Hour lhs,int rhs)
  53. {
  54. return lhs + new Hour(rhs);
  55. }
  56. //使一個int 可以+hour。
  57. public static Hour operator +(int lhs, Hour rhs)
  58. {
  59. return new Hour(lhs)+rhs;
  60. }
  61. }
  62. }

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. //==操作符是二元操作符,必須帶有兩個參數(shù)
  16. public static bool operator==(Hour lhs,Hour rhs)
  17. {
  18. return lhs.iValue == rhs.iValue;
  19. }
  20. public static bool operator!=(Hour lhs,Hour rhs)
  21. {
  22. return lhs.iValue != rhs.iValue;
  23. }
  24. }
  25. //++操作符有前綴和后綴的形式,C#能智能地為前綴后后綴使用同一個操作符。
  26. static void Main(string[] args)
  27. {
  28. //2、實例化類  ,C#操作符重載
  29. Hour hu = new Hour(10);
  30. //3、
  31. //操作符重載
  32. hu++;
  33. //輸出重載后的結(jié)果
  34. Console.WriteLine("Hu++ = {0}", hu.iValue);
  35. //C#操作符重載
  36. ++hu;
  37. //輸出重載后的結(jié)果
  38. Console.WriteLine("Hu++ = {0}", hu.iValue);
  39. Console.ReadKey();

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


文章標題:C#操作符重載的那點事兒
當前網(wǎng)址:http://www.5511xx.com/article/djipcps.html