欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#入門(mén)之類(lèi)型轉(zhuǎn)換詳解

 更新時(shí)間:2014年04月15日 11:04:56   作者:  
這篇文章主要介紹了c#的類(lèi)型轉(zhuǎn)換詳解,類(lèi)型轉(zhuǎn)換分兩種形式:隱式轉(zhuǎn)換、顯示轉(zhuǎn)換,下面是詳細(xì)介紹

“無(wú)論是什么類(lèi)型,所有的數(shù)據(jù)都是一系列的位,即一系列0和1。變量的含義是通過(guò)解釋這些數(shù)據(jù)的方式來(lái)傳達(dá)的?!薄@句原話是書(shū)上翻譯的,不過(guò)后一句話總感覺(jué)理解起來(lái)不是很通俗,自己覺(jué)得這樣理解可能會(huì)合適些:無(wú)論什么類(lèi)型的數(shù)據(jù),在計(jì)算機(jī)存儲(chǔ)時(shí)都是0和1,而變量的意義,就是以不同的方式來(lái)解釋這些數(shù)據(jù),以達(dá)到滿足程序應(yīng)用、節(jié)約內(nèi)存等需求。

換句話說(shuō):變量存在的意義,就是建立規(guī)(標(biāo))范(準(zhǔn))的數(shù)據(jù)存儲(chǔ)方式。

隱式轉(zhuǎn)換

類(lèi)型轉(zhuǎn)換分兩種形式:隱式轉(zhuǎn)換、顯示轉(zhuǎn)換。

隱式轉(zhuǎn)換不需要單獨(dú)的表達(dá)式,只需要把滿足隱式轉(zhuǎn)換條件的兩個(gè)變量做相應(yīng)的表達(dá)式操作即可,但隱式轉(zhuǎn)換的結(jié)果可能并不是自己意料之中的:

復(fù)制代碼 代碼如下:

ushort destinationVar;
char sourceVar = 'a';
destinationVar = sourceVar;
Console.WriteLine("sourceVar: {0}", sourceVar);
Console.WriteLine("destinationVar: {0}\n",destinationVar);

上面的輸出結(jié)果,sourceVar的是a,而destinationVar雖然=sourceVar,但輸出的結(jié)果是97??梢钥闯?,雖然兩種數(shù)據(jù)類(lèi)型滿足隱式轉(zhuǎn)換的條件(存儲(chǔ)的值范圍),但不同的表達(dá)類(lèi)型決定了最終的結(jié)果也不一樣。另外,和大多數(shù)編程一樣,隱式轉(zhuǎn)換時(shí),只要類(lèi)型A的取值范圍比類(lèi)型B的范圍小,就可以隱藏轉(zhuǎn)換為B。

顯示轉(zhuǎn)換

在顯示轉(zhuǎn)換中,可以使用強(qiáng)制轉(zhuǎn)換和Convert。

強(qiáng)制轉(zhuǎn)換只在某些情況下可以,可能應(yīng)用的場(chǎng)景不太豐富,當(dāng)然,這個(gè)的確要方便一些,在變量前加上類(lèi)似 (byte) 的代碼就可以了:

復(fù)制代碼 代碼如下:

byte destinationVar;
short sourceVar = 281;
destinationVar = (byte)sourceVar;
Console.WriteLine("sourceVar: {0}", sourceVar);
Console.WriteLine("destinationVar: {0}\n",destinationVar);

這個(gè)例子比較有意思,輸出的結(jié)果是:sourceVar: 281, destinationVar: 25; 為什么不是變更為255?這就回到開(kāi)頭提到的了,其實(shí)轉(zhuǎn)換過(guò)程中,丟掉的是數(shù)據(jù)存儲(chǔ)的二進(jìn)制位:

在轉(zhuǎn)換的過(guò)程中,會(huì)把超過(guò)取值范圍(255二進(jìn)制位)的那個(gè)1丟掉,保留其它的位,所以最終結(jié)果是25,而不是255,也不是281。

Convert轉(zhuǎn)換應(yīng)該是常用的方式,因?yàn)樗冀K會(huì)進(jìn)行溢出檢查。

溢出檢查配置

有些東西雖然沒(méi)什么用,但是我們應(yīng)該知道,否則出問(wèn)題的時(shí)候就不知道怎么解決了。配置:解決方案資源管理器 - 右鍵 - 屬性 - 生成 - 高級(jí) - 檢查運(yùn)算上溢/下溢:

當(dāng)然,對(duì)于強(qiáng)制轉(zhuǎn)換可能需要這個(gè)配置,但使用Convert轉(zhuǎn)換時(shí)始終會(huì)進(jìn)行溢出檢查的,所以這個(gè)配置和checked/unchecked就不起作用了。

結(jié)語(yǔ)

每次一看見(jiàn)那些數(shù)據(jù)類(lèi)型、表達(dá)式的列表表格就頭疼,因?yàn)楦居洸蛔?。就像哪些?lèi)型可以怎么轉(zhuǎn)換成其它的類(lèi)型的表格一樣,其實(shí)個(gè)人感覺(jué)大可不必去記住這些,在實(shí)際做項(xiàng)目的過(guò)程中,只要記得有這方面的功能就行了,具體用哪一個(gè),可以再回過(guò)頭來(lái)翻書(shū)或google。

應(yīng)該掌握的是:記住存在隱式轉(zhuǎn)換,但這種方式應(yīng)該盡量少用吧。而顯示轉(zhuǎn)換,方便的就直接用(),當(dāng)然,最可靠的應(yīng)該是Convert,因?yàn)樵谵D(zhuǎn)換時(shí),Convert始終都會(huì)進(jìn)行溢出檢查。

相關(guān)文章

最新評(píng)論