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

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

為什么我不能將int開(kāi)箱為小數(shù)?

為什么我不能將int開(kāi)箱為小數(shù)?

C#
開(kāi)心每一天1111 2019-09-24 15:06:40
我有一個(gè)IDataRecord reader我從如下檢索小數(shù):decimal d = (decimal)reader[0];由于某種原因,這將引發(fā)無(wú)效的強(qiáng)制轉(zhuǎn)換異常,指出“指定的強(qiáng)制轉(zhuǎn)換無(wú)效”。當(dāng)我這樣做時(shí),reader[0].GetType()它告訴我它是一個(gè)Int32。據(jù)我所知,這應(yīng)該不是問(wèn)題。我已經(jīng)通過(guò)這個(gè)片段進(jìn)行了測(cè)試,效果很好。int i = 3750;decimal d = (decimal)i;這讓我scratch不解,想知道為什么它無(wú)法將裝在閱讀器中的int裝箱為小數(shù)。有誰(shuí)知道為什么會(huì)這樣?我想念些什么嗎?
查看完整描述

3 回答

?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

您只能將值類型拆箱為其原始類型(以及該類型的可空版本)。


順便說(shuō)一句,這是有效的(只是您的兩行版本的縮寫(xiě)):


object i = 4;

decimal d = (decimal)(int)i; // works even w/o decimal as it's a widening conversion

出于此原因,請(qǐng)閱讀Eric Lippert的博客條目:表示和身份


就我個(gè)人而言,我將通過(guò)轉(zhuǎn)換語(yǔ)法完成的工作歸類為四種不同類型的操作(它們都有不同的IL指令):


裝箱(boxIL指令)和拆箱(unboxIL指令)

通過(guò)繼承層次結(jié)構(gòu)進(jìn)行轉(zhuǎn)換(如dynamic_cast<Type>C ++中一樣,使用castclassIL指令進(jìn)行驗(yàn)證)

基本類型之間的轉(zhuǎn)換(像static_cast<Type>在C ++中一樣,對(duì)于基本類型之間的不同類型的轉(zhuǎn)換,有很多IL指令)

調(diào)用用戶定義的轉(zhuǎn)換運(yùn)算符(在IL級(jí)別,它們只是對(duì)適當(dāng)op_XXX方法的方法調(diào)用)。


查看完整回答
反對(duì) 回復(fù) 2019-09-24
?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊

轉(zhuǎn)換為intto 沒(méi)問(wèn)題decimal,但是當(dāng)您將一個(gè)對(duì)象拆箱時(shí),您必須使用該對(duì)象包含的確切類型。


要將int值拆箱為decimal值,請(qǐng)先將其拆為int型,然后將其強(qiáng)制轉(zhuǎn)換為十進(jìn)制:


decimal d = (decimal)(int)reader[0];

IDataRecord接口還具有將值拆箱的方法:


decimal d = (decimal)reader.GetInt32(0);


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

添加回答

舉報(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)