在枚舉聲明中的多個值:更深入地深入clr
探究了通用語言運行時(CLR)的實現細節,很明顯枚舉與結構基本上相似。在幕後,枚舉源自System.Enum Base類,本質上是具有預定恆定值的結構。 考慮示例枚舉聲明:當C#禁止對結構的顯式基類聲明,但CLR仍為枚舉生成此表示。
在枚舉類型中具有相同值的多個常數的存在並不構成問題。但是,這種非唯一的價值分配可能會導致轉換為枚舉類型時出乎意料的行為。 color color2 =(color)enum.parse(typeof(color),“ 1”);color1和color2都將設置為紅色值,因為第一個值分配是任意的。從技術上講,color1和color2均未分配紅色;相反,它們保存值1。但是當顯示時,紅色就是您會看到的。
此外,非唯一的枚舉值之間的比較操作可能會產生令人驚訝的結果:這個公平是正確的,因為紅色和綠色的基礎數值均為1。
雖然本質上是有問題的,但在使用非偶然值的枚舉時,它會保證考慮枚舉時的考慮。必須確定這種非唯一性是否與您的枚舉設計的預期目的和語義相吻合。免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3