最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

第 8 講:數(shù)據(jù)類型(五):類型轉(zhuǎn)換

2021-03-24 09:21 作者:SunnieShine  | 我要投稿

在前面的文章里,我們只簡單介紹了數(shù)據(jù)的基本用法、變量的聲明以及輸出格式的問題。今天我們要把數(shù)據(jù)類型完結(jié)。

Part 1 類型需要轉(zhuǎn)換嗎?

數(shù)據(jù)決定了數(shù)據(jù)處理過程的模式和方法。當(dāng)不同數(shù)據(jù)之間混用的時候,就必須要注意數(shù)據(jù)的轉(zhuǎn)換。舉個例子,intdouble 是可以互相轉(zhuǎn)換的,因為我們之前介紹字面量的時候,是允許數(shù)據(jù)直接賦值的。但 C# 是嚴(yán)謹(jǐn)?shù)?,這種轉(zhuǎn)換是一種叫做隱式轉(zhuǎn)換(Implicit Cast 或 Implicit Conversion)的機制才成功的;另外,C# 里也提供了一些復(fù)雜類型之間的轉(zhuǎn)化。舉個例子,string 類型的數(shù)據(jù)(字符串)顯然是不可能轉(zhuǎn)換為一個整數(shù)的。因為 string 里可以放任何東西進(jìn)去,所以它里面不一定只有數(shù)字字符。因此,如果一個可能的只有數(shù)字的字符串轉(zhuǎn)換為數(shù)值類型的話,它們之間就需要更為復(fù)雜的轉(zhuǎn)換。

今天我們就需要給大家介紹這類東西。

Part 2 顯式轉(zhuǎn)換(強制轉(zhuǎn)換)

我們允許一種語法形式:(T)變量,來表示變量強制轉(zhuǎn)換(Explicit Cast 或 Explicit Conversion)為指定的類型。舉個例子:

我們使用這個語法,在數(shù)值左側(cè)寫上 (int),表示將 35.5 這個字面量轉(zhuǎn)換為 int 類型的數(shù)據(jù)。如果沒有這個 int 類型的強制轉(zhuǎn)換的話,賦值就會失?。阂驗橛覀?cè)的是小數(shù),左邊是整數(shù),小數(shù)可以表示的數(shù)據(jù)的范圍較大,因此賦值會失敗。

稍微注意一下的是,布爾類型、字符串這樣的數(shù)據(jù)類型和整數(shù)、浮點數(shù)是無法轉(zhuǎn)換的(即使使用了強制轉(zhuǎn)換符號):bool b = (bool)3; 以及 int i = (int)false; 類似于這樣的語句一定是失敗的——因為范圍完全沒有交集。

可以使用強制轉(zhuǎn)換的類型有這樣的一些:

  • float 轉(zhuǎn)所有的整數(shù)數(shù)據(jù)類型;

  • double 轉(zhuǎn)所有的整數(shù)數(shù)據(jù)類型;

  • double 轉(zhuǎn) float;

  • decimal 轉(zhuǎn)所有的整數(shù)數(shù)據(jù)類型;

  • decimal 轉(zhuǎn) floatdouble;

  • 整數(shù)類型轉(zhuǎn)范圍更小的整數(shù)數(shù)據(jù)類型。

但是,如果數(shù)據(jù)超出了可轉(zhuǎn)換的范圍的話,就會在運行期間產(chǎn)生轉(zhuǎn)換數(shù)據(jù)的錯誤。

Part 3 隱式轉(zhuǎn)換

俗話說,只要數(shù)據(jù)類型不同的時候,數(shù)據(jù)賦值就需要類型轉(zhuǎn)換。但有些時候,數(shù)據(jù)完全沒有必要明確轉(zhuǎn)換過程(比如前面這個強制轉(zhuǎn)換的符號)。比如說

顯然,3 也可以是一個 double 類型的數(shù)據(jù),即使這里寫出來的 3 這個字面量本身是 int 類型的。我們將這種(不用書寫強制轉(zhuǎn)換符號就允許轉(zhuǎn)換)稱為隱式轉(zhuǎn)換。

隱式轉(zhuǎn)換一般適用于所有取值范圍較小轉(zhuǎn)到較大的時候。只要范圍更大的話,必然就可以完全包含全部較小的數(shù)據(jù),那么寫不寫轉(zhuǎn)換的話,C# 肯定都應(yīng)該是允許的:因為 C# 知道,這樣的轉(zhuǎn)換必然是成功的。

當(dāng)然了,你依然可以書寫上強制轉(zhuǎn)換的符號:

只是這個強制轉(zhuǎn)換符號 (double) 完全可以不寫出來。

從這個角度來說,強制轉(zhuǎn)換(顯式轉(zhuǎn)換)和隱式轉(zhuǎn)換并非是互補的兩種轉(zhuǎn)換模式:隱式轉(zhuǎn)換只是強制轉(zhuǎn)換里的一種特例。

Part 4 其它轉(zhuǎn)換

顯然,C# 里的字符串是不能給其它類型進(jìn)行轉(zhuǎn)換的。因為字符串本身是用字符拼湊起來的,而字符只是起到顯示的作用:它并非真正的數(shù)值。

那么,我們想把一個只有數(shù)字字符構(gòu)成的字符串,轉(zhuǎn)換為一個數(shù)字的話,這怎么做呢?

4-1 字符串轉(zhuǎn)其它數(shù)據(jù)類型

我隨便寫了這么幾個。可以發(fā)現(xiàn),直接將類型名稱寫出來,在后面追加 .Parse(字符串) 將字符串轉(zhuǎn)換為數(shù)值類型。

有意思的是,Parse 還能把字符串轉(zhuǎn)成布爾數(shù)據(jù)。比如一個 "false" 字符串,里面是由 f、a、l、s、e 五個字母構(gòu)成的只提供顯示用的字符串。

所有基本數(shù)據(jù)類型都自帶 .Parse 方法。你完全可以把字符串?dāng)?shù)據(jù)(變量、字面量)帶入,然后就可以得到結(jié)果。

4-2 其它數(shù)據(jù)類型轉(zhuǎn)字符串

如果反過來的話,我們使用是 數(shù)值.ToString() 這樣的格式進(jìn)行轉(zhuǎn)換。

我們直接在字面量或變量后直接追加 .ToString(),就可以轉(zhuǎn)化為字符串。

4-3 布爾型轉(zhuǎn)整數(shù)

前面介紹了很多數(shù)據(jù)類型,但很遺憾的是,布爾型無法和整數(shù)進(jìn)行轉(zhuǎn)化。學(xué)過 C 語言的朋友都知道,非 0 表示為真、0 表示為假;真表示成 1、假表示為 0。怎么說,布爾和整數(shù)都是可以轉(zhuǎn)換的。

C# 里,布爾型數(shù)據(jù)是無法和整數(shù)進(jìn)行互相轉(zhuǎn)換的。因此,我們必須轉(zhuǎn)換數(shù)據(jù)的話,唯一的辦法是使用這樣復(fù)雜的語句:

這里的 Convert.ToBooleanConvert.ToInt32 方法就專門轉(zhuǎn)化這兩種數(shù)據(jù)類型。但希望你注意,要使用這兩個方法,你需要和 Console.WriteLine 一樣,先寫上 using System; 這條引用指令。

Part 4 綜合示例

我們來看一則完整的 C# 程序:

我想,前面的內(nèi)容應(yīng)該能夠幫助你理解這個程序。稍微注意一下的是,Console.ReadLineConsole.WriteLine 方法的執(zhí)行方向是相反的:Console.ReadLine 是在屏幕上通過用戶輸入,來讀取一個字符串。輸入的內(nèi)容就會自動讀入到左側(cè)變量里。

然后,變量定義是可以不用賦初始數(shù)值的,因為 Console.ReadLine 可以讀取信息給變量,因此沒有必要給變量添加賦值過程。

比如,我輸入的一些數(shù)據(jù)讀入進(jìn)去了之后,結(jié)果可以是這樣的:

Part 5 總結(jié)

那么,至此我們就把數(shù)據(jù)類型的內(nèi)容給大家介紹完畢了。前面我們學(xué)習(xí)了很多數(shù)據(jù)類型的知識點,比如說數(shù)據(jù)類型的意義、數(shù)據(jù)類型的轉(zhuǎn)換、數(shù)據(jù)類型的使用方式等等。我想你對 C# 的數(shù)據(jù)類型有了一個基本的認(rèn)識。沒有關(guān)系,就算你沒有完全記住它們。文檔都是可以提供給你以后查看和參考的,所以不用擔(dān)心忘記了。


第 8 講:數(shù)據(jù)類型(五):類型轉(zhuǎn)換的評論 (共 條)

分享到微博請遵守國家法律
塔河县| 嘉兴市| 常德市| 玉屏| 浠水县| 尚志市| 海口市| 延边| 天等县| 城固县| 平阴县| 永城市| 柏乡县| 大石桥市| 庆阳市| 芜湖市| 那曲县| 无锡市| 平顶山市| 金华市| 淳化县| 墨竹工卡县| 平阴县| 屏南县| 通辽市| 武汉市| 咸宁市| 榆树市| 余干县| 丹寨县| 白银市| 东源县| 咸宁市| 滕州市| 西宁市| 景东| 竹北市| 翼城县| 黔江区| 江油市| 长沙市|