日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

C#中數(shù)據(jù)類(lèi)型的轉(zhuǎn)換介紹_C#教程

作者:摸魚(yú)小能手丫 ? 更新時(shí)間: 2022-03-22 編程語(yǔ)言

今天學(xué)習(xí)了一下數(shù)據(jù)類(lèi)型的轉(zhuǎn)換,我整理出了一下筆記;

1、parse轉(zhuǎn)換:將string類(lèi)型轉(zhuǎn)化為其他類(lèi)型

 //數(shù)據(jù)類(lèi)型的轉(zhuǎn)換
                //即string"18"==> int 18,
                //1、parse轉(zhuǎn)換:將string類(lèi)型轉(zhuǎn)化為其他類(lèi)型
                //待轉(zhuǎn)數(shù)據(jù)必須要像該數(shù)據(jù)類(lèi)型
                string strNumber = "18";
                int num01 = int.Parse(strNumber);
                float num02 = float.Parse(strNumber);

2、任意類(lèi)型轉(zhuǎn)化為string類(lèi)型

//2、任意類(lèi)型轉(zhuǎn)化為string類(lèi)型
                int number = 18;
                string str = number.ToString();

昨天在做老師的練習(xí)的時(shí)候,就用到了這兩種類(lèi)型的轉(zhuǎn)換,比如想把char類(lèi)型轉(zhuǎn)換成為int類(lèi)型,可以先把它轉(zhuǎn)化為string類(lèi)型,再把string類(lèi)型轉(zhuǎn)化為int類(lèi)型從而實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)換,最穩(wěn)健的做法,string類(lèi)是充當(dāng)了一個(gè)類(lèi)似與“容器”的作用。

3、隱式轉(zhuǎn)換:自動(dòng)轉(zhuǎn)換-->小范圍到大范圍自動(dòng)轉(zhuǎn)換

//3、隱式轉(zhuǎn)換:自動(dòng)轉(zhuǎn)換-->小范圍到大范圍自動(dòng)轉(zhuǎn)換
 
            byte b3 = 100;
            int i3 = b3;

這個(gè)沒(méi)什么可說(shuō),很好理解,可以把b3變量看成一塊“地”,存了100,byte是占一個(gè)字節(jié),而int占4個(gè)字節(jié),如果一個(gè)數(shù)據(jù)放在一個(gè)內(nèi)存小的地方都放得下,那內(nèi)存大的地方也能放下。

4、顯示轉(zhuǎn)換:強(qiáng)制轉(zhuǎn)換-->由大范圍到小范圍的強(qiáng)制轉(zhuǎn)換,不過(guò)可能會(huì)發(fā)生精度丟失

 //4、顯示轉(zhuǎn)換:強(qiáng)制轉(zhuǎn)換-->由大范圍到小范圍的強(qiáng)制轉(zhuǎn)換,可能會(huì)發(fā)生精度丟失
            int i4 = 100;
            byte b4 = (byte)i4;

這個(gè)強(qiáng)制轉(zhuǎn)換就厲害了,不過(guò)語(yǔ)法也很簡(jiǎn)單,給大家看我輸入的幾個(gè)例子就明白為什么簡(jiǎn)單了

            byte numbe1 = 1;
            short numbe2 = 2;
            short resu =numbe1 + numbe2;

這里的第三行報(bào)錯(cuò),

?這里我們要仔細(xì)閱讀錯(cuò)誤,無(wú)法將int類(lèi)型隱式轉(zhuǎn)換成short,就說(shuō)明我們這個(gè)resu變量應(yīng)該為int類(lèi)型,或者用強(qiáng)制轉(zhuǎn)換。(如果把第三行的short換成byte,一樣的解決方式)

            byte numbe1 = 1;
            short numbe2 = 2;
            short resu = (short)(numbe1 + numbe2);
            //或int resu =numbe1 + numbe2;
            byte numbe1 = 1;
            byte numbe2 = 2;
            byte resu = (byte)(numbe1 + numbe2);
            //或int resu =numbe1 + numbe2;

在強(qiáng)制轉(zhuǎn)換中出現(xiàn)這種無(wú)法隱式轉(zhuǎn)換類(lèi)型的錯(cuò)誤時(shí),看錯(cuò)誤提示就行,很簡(jiǎn)單。

不過(guò)我在嘗試其他類(lèi)型的時(shí)候,卻發(fā)現(xiàn)了一個(gè)不一樣的錯(cuò)誤。

?float類(lèi)型和decimal類(lèi)型竟然不能相加?

查閱資料后發(fā)現(xiàn)原來(lái)它們兩在內(nèi)存里面存儲(chǔ)的結(jié)構(gòu)就不一樣,float浮點(diǎn)型是近似存儲(chǔ)(包括double),而decimal是精確存儲(chǔ),所以無(wú)法相加。(祖師爺告訴我的....)。

不過(guò)float與double類(lèi)型可以相加

            float numbe1 = 1;
            double numbe2 = 2;
            byte resu = (byte)(numbe1 + numbe2);
            //或double resu = numbe1 + numbe2;

可以理解為由多種變量參與運(yùn)算,結(jié)果自動(dòng)向較大的類(lèi)型提升。

5、最后再給一個(gè)簡(jiǎn)單的題目考考大家:

代碼中的b+=3和b=b+3,這兩種寫(xiě)法完全一樣的嗎?

           int a = 1;
            a = a + 3;
            a += 3;
 
 
            byte b = 1;
            b += 3;
            b = b + 3;
答案是不一樣的,會(huì)報(bào)錯(cuò),因?yàn)轭?lèi)型提升為int了。

?加一個(gè)強(qiáng)制轉(zhuǎn)換,就解決了。

?為什么b+=3不報(bào)錯(cuò)呢?

+=屬于快捷運(yùn)算符,不做自動(dòng)類(lèi)型提升。不過(guò)如果初始b值過(guò)大,超出范圍255,會(huì)從頭開(kāi)始,即從0開(kāi)始,

?

原文鏈接:https://blog.csdn.net/m0_58739847/article/details/122284167

欄目分類(lèi)
最近更新