3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
簡(jiǎn)短的回答:語言設(shè)計(jì)者決定以這種方式設(shè)計(jì)語言。
答案很長(zhǎng):Section 6.2.2: Explicit enumeration conversions
C#語言規(guī)范說:
通過將任何參與的枚舉類型視為該枚舉類型的基礎(chǔ)類型,然后在結(jié)果類型之間執(zhí)行隱式或顯式數(shù)字轉(zhuǎn)換,處理兩種類型之間的顯式枚舉轉(zhuǎn)換。例如,給定枚舉類型E with和基礎(chǔ)類型int,從E到byte的轉(zhuǎn)換作為顯式數(shù)字轉(zhuǎn)換(第6.2.1節(jié))從int到byte處理,從byte到E的轉(zhuǎn)換處理為從byte到int的隱式數(shù)值轉(zhuǎn)換(第6.1.2節(jié))。
基本上,在進(jìn)行轉(zhuǎn)換操作時(shí),枚舉被視為基礎(chǔ)類型。默認(rèn)情況下,枚舉的基礎(chǔ)類型是Int32
,這意味著轉(zhuǎn)換的處理方式與轉(zhuǎn)換完全相同Int32
。這意味著任何有效值int
都是允許的。
我懷疑這主要是出于性能原因。通過制作enum
簡(jiǎn)單的整數(shù)類型并允許任何整數(shù)類型轉(zhuǎn)換,CLR不需要進(jìn)行所有額外檢查。這意味著enum
與使用整數(shù)相比,使用a確實(shí)沒有任何性能損失,這反過來又有助于鼓勵(lì)使用它。
- 3 回答
- 0 關(guān)注
- 919 瀏覽
添加回答
舉報(bào)