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

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

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

    通過運(yùn)算符重載(operator overloading),可以對我們設(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ù)相加”這么簡單。稍后介紹一個(gè)進(jìn)一步升級CaidLib庫的示例。我們將提供比較運(yùn)算符的實(shí)現(xiàn)代碼,比較兩張牌,看看在一圈(撲克牌游戲中的一局)中哪張牌會贏。

    因?yàn)樵谠S多撲克牌游戲中,一圈取決于牌的花色,這并不像比較牌上的數(shù)字那樣直接。如果第二張牌與第—張牌的花色不同,則無論其點(diǎn)數(shù)是什么,第一張牌都會贏。考慮兩個(gè)操作數(shù)的順序,就可以實(shí)現(xiàn)這種比較。也可以考慮“王牌”的花色,而王牌可以勝過其他花色,即使該王牌的花色與第一張牌不同,也是如此。也就是說,card1 > card2是true(這表示如果card1是第一個(gè)出牌,則card1勝過了 card2),并不意味著card2 > cardl1是false。如果card1和card2都不是王牌,且屬于不同的花色,則這兩個(gè)比較都是true。

    但我們先看一下運(yùn)算符重載的基本語法。要重載運(yùn)算符,可給類添加運(yùn)算符類型成員(它們必須是static)。一些運(yùn)算符有多種用途(如-運(yùn)算符就有一元和二元兩種功能),因此我們還指定了要處理多少個(gè)操作數(shù),以及這些操作數(shù)的類型。一般情況下,操作數(shù)的類型與定義運(yùn)算符的類相同,但也可以定義處理混合類型的運(yùn)算符。

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

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