91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#操作符重載如何實現

發布時間:2021-12-03 09:44:41 來源:億速云 閱讀:140 作者:iii 欄目:編程語言

這篇文章主要講解了“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#操作符重載代碼進行說明:

class Program  {  static void Main(string[] args)  {  Hour hrValue1 = new Hour(10);  Hour hrValue2 = new Hour(20);   //2、得到兩個Hour相加結果  Hour hrSum = hrValue1 + hrValue2;   //得到Hour+Int的結果  Hour hrSumInt = hrValue1 + 10;   //得到Int+Hour的結果  Hour hrIntSum = 11 + hrValue2;  Console.WriteLine("hrValue1 +  hrValue2 = {0}", hrSum.iValue);  Console.WriteLine("hrValue1 +  10  = {0}", hrSumInt.iValue);  Console.WriteLine("11 +  hrValue2  = {0}", hrIntSum.iValue);  Console.ReadKey();  }  struct Hour  {  private int value;  //此構造函數根據int值創建Hour類 ,C#操作符重載 public Hour(int iValue)  {  this.value = iValue;  }  //定義一個屬性,便于取用value值  public int iValue  {  get {  return value;  }  } //C#操作符重載//1、聲明一個二元操作符,將兩個Hour類加到一起   public static Hour operator+ (Hour lhs,Hour rhs)  {  return new Hour(lhs.value + rhs.value);  }   /*  操作符是public的。所有操作符都必須是public的   操作符是static的。所有操作符都必須是static的,操作永遠不具有多態性,   面且不能使用virtual、abstract、override或者sealed修飾符。   二元操作符(比如+)有兩個顯式參數;一元操作符有一個顯式的參數   我們有了public Hour(int iValue)構造函數,就可以將一個int與Hour相加,只是首先要將int轉換成為Hour   hour a= ;   int b= ;   Hour sum=a+new Hour(b);   雖然上述代碼完全有效,但相較于讓一個Hour和一個int直接相加它即不清晰也不準確。   為了使Hour可以+ int,必須聲明一個二元操作符+,它的***個參數是Hour,第二個參數是一個int。   C#操作符重載 */ public static Hour operator+ (Hour lhs,int rhs)  {  return lhs + new Hour(rhs);  }  //使一個int 可以+hour。  public static Hour operator +(int lhs, Hour rhs)  {  return new Hour(lhs)+rhs;  }  }  }

C#操作符重載示例2:

struct Hour  {  public int iValue;  //構造函數  public Hour(int initialValue)  {  this.iValue = initialValue;  }  //1、定義操作符重載(一元操作符)  public static Hour operator ++ (Hour huValue)  {  huValue.iValue++;  return huValue;  }  //C#操作符重載 //==操作符是二元操作符,必須帶有兩個參數  public static bool operator==(Hour lhs,Hour rhs)  {  return lhs.iValue == rhs.iValue;  }  public static bool operator!=(Hour lhs,Hour rhs)  {  return lhs.iValue != rhs.iValue;  }  }   //++操作符有前綴和后綴的形式,C#能智能地為前綴后后綴使用同一個操作符。   static void Main(string[] args)  {  //2、實例化類  ,C#操作符重載 Hour hu = new Hour(10);  //3、  //操作符重載   hu++;  //輸出重載后的結果   Console.WriteLine("Hu++ = {0}", hu.iValue);  //C#操作符重載   ++hu;  //輸出重載后的結果   Console.WriteLine("Hu++ = {0}", hu.iValue);   Console.ReadKey();  }

感謝各位的閱讀,以上就是“C#操作符重載如何實現”的內容了,經過本文的學習后,相信大家對C#操作符重載如何實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凤山市| 堆龙德庆县| 井冈山市| 吐鲁番市| 荃湾区| 河北区| 三江| 枝江市| 仙桃市| 卢氏县| 博客| 双桥区| 祁门县| 邮箱| 嘉黎县| 延庆县| 南丰县| 荆门市| 红原县| 墨玉县| 民和| 三亚市| 岗巴县| 印江| 新竹县| 西吉县| 东城区| 堆龙德庆县| 张家川| 龙岩市| 惠安县| 左云县| 井陉县| 江川县| 洪江市| 仙游县| 巴楚县| 荆门市| 海淀区| 泰安市| 比如县|