使用 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();
}
}