C# 運(yùn)算符重載
通過(guò)運(yùn)算符重載(operator overloading),可以對(duì)我們?cè)O(shè)計(jì)的類使用標(biāo)準(zhǔn)的運(yùn)算符,例如+、>等。這稱為重載,因?yàn)樵谑褂锰囟ǖ膮?shù)類型時(shí),我們?yōu)檫@些運(yùn)算符提供了自己的實(shí)現(xiàn)代碼,其方式與重載方法相同,也是為同 名方法提供不同的參數(shù)。
運(yùn)算符重載非常有用,因?yàn)槲覀兛稍谶\(yùn)算符重載的實(shí)現(xiàn)中執(zhí)行需要的任何操作,這并不一定像用“+”表示“把這兩個(gè)操作數(shù)相加”這么簡(jiǎn)單。稍后介紹一個(gè)進(jìn)一步升級(jí)CaidLib庫(kù)的示例。我們將提供比較運(yùn)算符的實(shí)現(xiàn)代碼,比較兩張牌,看看在一圈(撲克牌游戲中的一局)中哪張牌會(huì)贏。
因?yàn)樵谠S多撲克牌游戲中,一圈取決于牌的花色,這并不像比較牌上的數(shù)字那樣直接。如果第二張牌與第—張牌的花色不同,則無(wú)論其點(diǎn)數(shù)是什么,第一張牌都會(huì)贏??紤]兩個(gè)操作數(shù)的順序,就可以實(shí)現(xiàn)這種比較。也可以考慮“王牌”的花色,而王牌可以勝過(guò)其他花色,即使該王牌的花色與第一張牌不同,也是如此。也就是說(shuō),card1 > card2是true(這表示如果card1是第一個(gè)出牌,則card1勝過(guò)了 card2),并不意味著card2 > cardl1是false。如果card1和card2都不是王牌,且屬于不同的花色,則這兩個(gè)比較都是true。
但我們先看一下運(yùn)算符重載的基本語(yǔ)法。要重載運(yùn)算符,可給類添加運(yùn)算符類型成員(它們必須是static)。一些運(yùn)算符有多種用途(如-運(yùn)算符就有一元和二元兩種功能),因此我們還指定了要處理多少個(gè)操作數(shù),以及這些操作數(shù)的類型。一般情況下,操作數(shù)的類型與定義運(yùn)算符的類相同,但也可以定義處理混合類型的運(yùn)算符。
點(diǎn)擊加載更多評(píng)論>>