電腦以二進位儲存資料,變數型別決定了位元的解讀方式。實務上頻繁需要在不同型別間轉換,例如將使用者輸入的字串轉為數值進行運算。
string input = Console.ReadLine();
double number = Convert.ToDouble(input); // 字串轉數值
無需撰寫額外程式碼,編譯器自動完成,發生在資料不會遺失的情況(如小型別轉大型別)。
ushort num1;
char ch = 'a';
num1 = ch; // 隱式轉換:char (16-bit) -> ushort (16-bit)
num1 = 98;
// ch = num1; // 錯誤:ushort 無法隱式轉為 char(可能超出字元範圍)
ch = (char)num1; // 需顯式轉換

可能導致資料遺失或溢位,必須由開發者明確指示,兩種主要方式:
int age = 22;
double myAge = (double)age; // int -> double
float price = 55.55f;
decimal coupon = (decimal)price; // float -> decimal
提供標準化、支援格式化與例外處理的轉換方法:
float price = 55.55f;
decimal coupon = Convert.ToDecimal(price);
string str = Convert.ToString(123);
DateTime dt = Convert.ToDateTime("2024-01-01");

| 方法 | 目標型別 |
|---|---|
| ToBoolean | bool |
| ToByte / ToSByte | byte / sbyte |
| ToChar | char |
| ToInt16 / ToInt32 / ToInt64 | short / int / long |
| ToUInt16 / ToUInt32 / ToUInt64 | ushort / uint / ulong |
| ToSingle / ToDouble | float / double |
| ToDecimal | decimal |
| ToDateTime | DateTime |
| ToString | string |
實務上最常用:ToString()、ToInt32()、ToDouble()、ToDateTime()。
來源型別可隱式轉換為目標型別:
| 來源型別 | 目標型別 |
|---|---|
| byte | short, ushort, int, uint, long, ulong, float, double, decimal |
| sbyte | short, int, long, float, double, decimal |
| short | int, long, float, double, decimal |
| ushort | int, uint, long, ulong, float, double, decimal |
| int | long, float, double, decimal |
| uint | ulong, float, double, decimal |
| long | float, double, decimal |
| ulong | float, double, decimal |
| float | double |
| char | ushort, int, uint, long, ulong, float, double, decimal |
表格無需背誦,編譯器會在型別不相容時提示錯誤。