使用 Convert 類:
ToBoolean -> bool
ToByte -> byte
ToChar -> char
ToDateTime -> DateTime
ToDecimal -> decimal
ToDouble -> double
ToInt16 -> short
ToInt32 -> int
ToInt64 -> long
ToSByte -> sbyte
ToSingle -> float
ToString -> string
ToUInt16 -> ushort
ToUInt32 -> uint
ToUInt64 -> ulong
using System;
class MyClass
{
static void Main()
{
int num;
string str;
num = 99;
str = Convert.ToString(num);
Console.WriteLine(str);
str = "123";
num = Convert.ToInt32(str);
Console.WriteLine(num);
Console.ReadKey();
}
}
隱式轉換, 只要容得下就行:
using System;
class MyClass
{
static void Main()
{
byte n = byte.MaxValue;
short n1 = n;
int n2 = n;
long n3 = n;
Console.WriteLine("{0},{1},{2}", n1, n2, n3); //255,255,255
Console.ReadKey();
}
}
顯示轉換, 可能會因溢出而丟失數據:
using System;
class MyClass
{
static void Main()
{
ulong n = ulong.MaxValue;
byte n1 = (byte)n;
ushort n2 = (ushort)n;
uint n3 = (uint)n;
Console.WriteLine("{0},{1},{2}", n1, n2, n3); //255,65535,4294967295
Console.ReadKey();
}
}
溢出檢查:
using System;
class MyClass
{
static void Main()
{
int i;
byte b;
i = 255;
b = (byte)i; /* i 在 byte 的范圍內, 不會溢出 */
b = unchecked((byte)i); /* 同上一行, 不做溢出檢查 */
Console.WriteLine(b); // 255
i++;
b = (byte)i; /* i 超出 byte 的范圍內, 會溢出 */
b = unchecked((byte)i); /* 同上一行, 不做溢出檢查 */
Console.WriteLine(b); // 0
i = 255;
b = checked((byte)i); /* 可以通過溢出檢測 */
Console.WriteLine(b); // 255
i++;
b = checked((byte)i); /* 不能通過溢出檢測, 會報錯 */
Console.WriteLine(b);
Console.ReadKey();
}
}