位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C# > 問(wèn)題詳情

C# 運(yùn)算符重載

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-07

    通過(guò)運(yùn)算符重載(operator overloading),可以對(duì)我們?cè)O(shè)計(jì)的類(lèi)使用標(biāo)準(zhǔn)的運(yùn)算符,例如+、>等。這稱(chēng)為重載,因?yàn)樵谑褂锰囟ǖ膮?shù)類(lèi)型時(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)算符,可給類(lèi)添加運(yùn)算符類(lèi)型成員(它們必須是static)。一些運(yùn)算符有多種用途(如-運(yùn)算符就有一元和二元兩種功能),因此我們還指定了要處理多少個(gè)操作數(shù),以及這些操作數(shù)的類(lèi)型。一般情況下,操作數(shù)的類(lèi)型與定義運(yùn)算符的類(lèi)相同,但也可以定義處理混合類(lèi)型的運(yùn)算符。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部