這篇文章主要講解了“C#操作符重載如何實(shí)現(xiàn)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C#操作符重載如何實(shí)現(xiàn)”吧!
在肇源等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,肇源網(wǎng)站建設(shè)費(fèi)用合理。
C#操作符重載是什么?
是指允許用戶使用用戶定義的類型編寫表達(dá)式的能力。
例如,通常需要編寫類似于以下內(nèi)容的代碼,以將兩個(gè)數(shù)字相加。很明顯,sum 是兩個(gè)數(shù)字之和。
int i = 5;
int sum = i + j;
如果可以使用代表復(fù)數(shù)的用戶定義的類型來編寫相同類型的表達(dá)式,那當(dāng)然是***不過了:
Complex i = 5;
Complex sum = i + j;
運(yùn)算符重載允許為用戶定義的類型重載(即指定明確的含義)諸如“+”這樣的運(yùn)算符。如果不進(jìn)行重載,則用戶需要編寫以下代碼:
Complex i = new Complex(5);
Complex sum = Complex.Add(i, j);
此代碼可以很好地運(yùn)行,但 Complex 類型并不能象語言中的預(yù)定義類型那樣發(fā)揮作用。
在我看來是操作符重載是讓struct、class、Interface等能夠進(jìn)行運(yùn)算。
如時(shí)實(shí)現(xiàn)C#操作符重載。
先寫關(guān)鍵詞public和static,后跟返回類型,后跟operator關(guān)鍵詞,后跟要聲明的操作符符號(hào),***在對(duì)一對(duì)圓括號(hào)中添加恰當(dāng)?shù)膮?shù)。
如下例中的struct Hour中的public static Hour operator+ (Hour lhs,Hour rhs){...}
C#操作符重載方法:
1、編寫操作符重載方法。
2、實(shí)例化后,進(jìn)行操作符運(yùn)算
下邊用C#操作符重載代碼進(jìn)行說明:
class Program { static void Main(string[] args) { Hour hrValue1 = new Hour(10); Hour hrValue2 = new Hour(20); //2、得到兩個(gè)Hour相加結(jié)果 Hour hrSum = hrValue1 + hrValue2; //得到Hour+Int的結(jié)果 Hour hrSumInt = hrValue1 + 10; //得到Int+Hour的結(jié)果 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; //此構(gòu)造函數(shù)根據(jù)int值創(chuàng)建Hour類 ,C#操作符重載 public Hour(int iValue) { this.value = iValue; } //定義一個(gè)屬性,便于取用value值 public int iValue { get { return value; } } //C#操作符重載//1、聲明一個(gè)二元操作符,將兩個(gè)Hour類加到一起 public static Hour operator+ (Hour lhs,Hour rhs) { return new Hour(lhs.value + rhs.value); } /* 操作符是public的。所有操作符都必須是public的 操作符是static的。所有操作符都必須是static的,操作永遠(yuǎn)不具有多態(tài)性, 面且不能使用virtual、abstract、override或者sealed修飾符。 二元操作符(比如+)有兩個(gè)顯式參數(shù);一元操作符有一個(gè)顯式的參數(shù) 我們有了public Hour(int iValue)構(gòu)造函數(shù),就可以將一個(gè)int與Hour相加,只是首先要將int轉(zhuǎn)換成為Hour hour a= ; int b= ; Hour sum=a+new Hour(b); 雖然上述代碼完全有效,但相較于讓一個(gè)Hour和一個(gè)int直接相加它即不清晰也不準(zhǔn)確。 為了使Hour可以+ int,必須聲明一個(gè)二元操作符+,它的***個(gè)參數(shù)是Hour,第二個(gè)參數(shù)是一個(gè)int。 C#操作符重載 */ public static Hour operator+ (Hour lhs,int rhs) { return lhs + new Hour(rhs); } //使一個(gè)int 可以+hour。 public static Hour operator +(int lhs, Hour rhs) { return new Hour(lhs)+rhs; } } }
C#操作符重載示例2:
struct Hour { public int iValue; //構(gòu)造函數(shù) public Hour(int initialValue) { this.iValue = initialValue; } //1、定義操作符重載(一元操作符) public static Hour operator ++ (Hour huValue) { huValue.iValue++; return huValue; } //C#操作符重載 //==操作符是二元操作符,必須帶有兩個(gè)參數(shù) 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#能智能地為前綴后后綴使用同一個(gè)操作符。 static void Main(string[] args) { //2、實(shí)例化類 ,C#操作符重載 Hour hu = new Hour(10); //3、 //操作符重載 hu++; //輸出重載后的結(jié)果 Console.WriteLine("Hu++ = {0}", hu.iValue); //C#操作符重載 ++hu; //輸出重載后的結(jié)果 Console.WriteLine("Hu++ = {0}", hu.iValue); Console.ReadKey(); }
感謝各位的閱讀,以上就是“C#操作符重載如何實(shí)現(xiàn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)C#操作符重載如何實(shí)現(xiàn)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
網(wǎng)站標(biāo)題:C#操作符重載如何實(shí)現(xiàn)
本文來源:http://chinadenli.net/article14/jieige.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、企業(yè)網(wǎng)站制作、、動(dòng)態(tài)網(wǎng)站、做網(wǎng)站、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)