電腦中所有資料以 0 和 1 形式存在,變數意義透過資料解釋方式傳達。實際應用常需不同資料型別間轉換。範例:
string str = null;
double num = null;
Console.WriteLine("輸入一串數字:");
str = Console.ReadLine();
num = Convert.ToDouble(str); // 字串轉數字
型別轉換兩種方法:隱含轉換、顯式轉換。
無需額外代碼直接轉換。例:
ushort num1;
char ch = 'a';
num1 = ch; // 直接轉換
// 輸出 num1 = 97
num1 = 98;
ch = num1; // 錯誤:無法將 ushort 隱含轉換為 char
ch = (char)num1; // 顯式轉換正確
明顯標識:轉換資料前有型別標識,如 ch = (char)num1。也可用 Convert 方法。範例:
int age = 22;
double myage = (double)age; // 顯式轉換
float price = 55.55F;
decimal cupon = Convert.ToDecimal(price); // Convert 方法
Console.WriteLine("float price={0}, decimal cupon={1}", price, cupon);
| 型別 | 編譯器隱含執行轉換 |
|---|---|
| sbyte | short, int, long, float, double, decimal |
| byte | short, ushort, int, uint, long, ulong, float, double, decimal |
| short | int, long, float, double, decimal |
| ushort | int, uint, long, ulong, float, double, decimal |
| int | long, float, double, decimal |
| uint | long, ulong, float, double, decimal |
| long | float, double, decimal |
| ulong | float, double, decimal |
| float | double |
| char | ushort, int, uint, long, ulong, float, double, decimal |
這些轉換與資料長度相關,無需背誦,編譯器會自動提示錯誤。
Convert.ToBoolean() Convert.ToInt64()
Convert.ToByte() Convert.ToSByte()
Convert.ToChar() Convert.ToString()
Convert.ToDecimal() Convert.ToSingle()
Convert.ToDouble() Convert.ToUInt16()
Convert.ToDateTime() Convert.ToUInt32()
Convert.ToInt16() Convert.ToInt32()
Convert.ToUInt64()
以上 16 方法中僅幾個實際常用,特別是 Convert.ToString()、Convert.ToChar()、Convert.ToDateTime() 使用頻率極高,請自行編程體會。下節將介紹 C# 三種常用複雜型別變數:結構體、陣列、列舉。