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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么將int轉(zhuǎn)換為無效的枚舉值而不拋出異常?

為什么將int轉(zhuǎn)換為無效的枚舉值而不拋出異常?

C#
達(dá)令說 2019-08-19 10:55:42
為什么將int轉(zhuǎn)換為無效的枚舉值而不拋出異常?如果我有這樣的枚舉:enum Beer{     Bud = 10,     Stella = 20,     Unknown}為什么在將int超出這些值的值轉(zhuǎn)換為某種類型時(shí)不會(huì)拋出異常Beer?例如,以下代碼不會(huì)拋出異常,它會(huì)向控制臺(tái)輸出“50”:int i = 50;var b = (Beer) i;Console.WriteLine(b.ToString());我覺得這很奇怪......任何人都可以澄清嗎?
查看完整描述

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 conversionsC#語言規(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ì)使用它。


查看完整回答
反對(duì) 回復(fù) 2019-08-19
  • 3 回答
  • 0 關(guān)注
  • 919 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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