(原创)c#学习笔记05--变量的更多内容01--类型转换01--隐式转换
第五章 變量的更多內容
本章內容:
●? 如何在類型之間進行隱式和顯式轉換
●? 如何創(chuàng)建和使用枚舉類型
●? 如何創(chuàng)建和使用結構類型
●? 如何創(chuàng)建和使用數組
●? 如何處理字符串值
首先要討論的主題是類型轉換,即把值從一種類型轉換為另一種類型。
接著闡述另外一些類型的變量:
枚舉——變量類型,用戶定義了一組可能的離散值,這些值可以用人們能理解的方式使用。
結構——合成的變量類型,由用戶定義的一組其他變量類型組成。
數組——包含一種類型的多個變量,可以以索引方式訪問各個數值。
這些類型比前面使用的簡單類型復雜一些,但可以使工作更容易完成。最后,學習另一個與字符串相關的主題——基本字符串處理。
5.1? 類型轉換
類型轉換采用以下兩種形式:
隱式轉換:從類型A到類型B的轉換可以在所有情況下進行,執(zhí)行轉換的規(guī)則非常簡單,可以讓編譯器執(zhí)行轉換。
顯式轉換:從類型A到類型B的轉換只能在某些情況下進行,轉換的規(guī)則比較復雜,應進行某種類型的處理。
5.1.1? 隱式轉換
隱式轉換不需要做任何工作,也不需要另外編寫代碼??紤]下面的代碼:
var1 = var2;如果var2的類型可以隱式地轉換為var1類型,這個賦值語句就涉及到一個隱式轉換。它也可能只處理相同類型的兩個變量,不需要隱式轉換。例如,ushort和char的值是可以互換的,因為它們都可以存儲0~65535之間的數字,在這兩個類型之間可以進行隱式轉換,如下面的代碼所示:
ushort destinationVar; char sourceVar = 'a'; destinationVar = sourceVar; Console.WriteLine("sourceVar val: {0}", sourceVar); Console.WriteLine("destinationVar val: {0}", destinationVar);這里存儲在sourceVar中的值放在destinationVar中。在用兩個Console.WriteLine()命令輸出變量時,得到如下結果:
sourceVar val: a destinationVar val: 97即使兩個變量存儲的是相同的信息,使用不同的類型解釋它們時,方式也是不同的。
簡單類型有許多隱式轉換;bool和string沒有隱式轉換,但數值類型有一些隱式轉換。表5-1列出了編譯器可以隱式執(zhí)行的數值轉換(記住,char存儲的是數值,所以char被當作一個數值類型)。
?
這些類型的隱式轉換規(guī)則是:任何類型A,只要其取值范圍完全包含在類型B的取值范圍內,就可以隱式轉換為類型B。
其原因是很簡單的。如果要把一個值放在變量中,而該值超出了變量的取值范圍,就會出問題。例如,short類型的變量可以存儲0~32767的數字,而byte可以存儲的最大值是255,所以如果要把一個short值轉換為byte值,就會出問題。如果short包含的值在256~32767之間,相應數值就不能放在byte中。
但是,如果short類型變量中的值小于255,就應能轉換這個值,對嗎?答案是可以。具體地說是可以,但必須使用顯式轉換。執(zhí)行顯式轉換有點類似于“我已經知道你對在這么做提出了警告,但我將對其后果負責”。
轉載于:https://www.cnblogs.com/wodehao0808/p/4908553.html
總結
以上是生活随笔為你收集整理的(原创)c#学习笔记05--变量的更多内容01--类型转换01--隐式转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手贱随手在Linux敲了 as 命令
- 下一篇: 解决Java compiler leve