第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以在整個項目中依賴枚舉選項值的唯一性嗎?

我可以在整個項目中依賴枚舉選項值的唯一性嗎?

C#
慕絲7291255 2022-11-13 14:47:20
我正在編寫一個應(yīng)用程序,它使用具有以下定義的字段的多個子類:public _ACTION ACTION { get; set; }public enum _ACTION { INVALID, UPDATE, VALID }根據(jù)該字段中提供的值,稍后會采取行動。雖然只實現(xiàn)了第一個類,但相應(yīng)的代碼如下所示:switch (action) {    case Class1._ACTION.INVALID:        this.ColorRow(row, StyleNotOK);        break;    case Class1._ACTION.UPDATE:        this.ColorRow(row, StyleUpdate);        break;    case Class1._ACTION.VALID:        break;}隨著第二個類 (Class2) 的出現(xiàn),它擴展了與 Class1 相同的基類(以及之后的每個類),switch 會變得更加復(fù)雜,我考慮過這樣的 switch 語句:switch (action) {    case Class1._ACTION.INVALID:    case Class2._ACTION.INVALID:        this.ColorRow(row, StyleNotOK);        break;    case Class1._ACTION.UPDATE:    case Class2._ACTION.UPDATE:        this.ColorRow(row, StyleUpdate);        break;    case Class1._ACTION.VALID:    case Class2._ACTION.VALID:        break;}但是,我理解它的方式是一個不同的枚舉選項由一個值表示。如果表示枚舉選項的值將被使用兩次,則該切換可能會失敗。一個解決方案是外觀,使用基類來定義枚舉,但是,我對實現(xiàn)的內(nèi)部結(jié)構(gòu)感興趣。您通常可以依賴代表枚舉選項的值的唯一性嗎?
查看完整描述

1 回答

?
明月笑刀無情

TA貢獻1828條經(jīng)驗 獲得超4個贊

在內(nèi)部,枚舉只是整數(shù)(或長整數(shù),或您定義的任何數(shù)字類型)。因此,如果您有多個枚舉,將它們轉(zhuǎn)換為 int 并比較它們可以得到相同的值。然而,這就是為什么你在比較之前不投射它們的原因。這確保了類型安全。如果您的兩個枚舉不是從同一類型派生的,那么您的比較甚至是不可能的,因為您期望的是 Class1._ACTION 類型的枚舉值,但將其與 Class2._Action 的實例進行比較。它應(yīng)該給你一個編譯時錯誤。如果您的枚舉的定義是基類的一部分,那么實例將是相同的并且雙重比較是多余的,正如 Jereon 上面提到的。

查看完整回答
反對 回復(fù) 2022-11-13
  • 1 回答
  • 0 關(guān)注
  • 102 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號