C# 类型转换

C# 类型转换

类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。

在 C# 中,类型转换有两种形式:

  • 隐式类型转换(默认) - 将较小的类型转换为较大的类型大小,这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。
    char -> int -> long -> float -> double
  • 显式类型转换 (强制类型转换)。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。
    double -> float -> long -> int -> char

隐式类型转换

将较小尺寸的类型传递给较大尺寸的类型时,会自动执行隐式转换:

实例

int myInt = 9;
double myDouble = myInt;       // 自动转换: int 到 double

Console.WriteLine(myInt);      // 输出 9
Console.WriteLine(myDouble);   // 输出 9

运行实例 »


显式类型转换

必须手动执行显式强制转换,方法是将类型放在值前面的括号中:

实例

double myDouble = 9.78;
int myInt = (int) myDouble;    // 手动转换:double 到 int

Console.WriteLine(myDouble);   // 输出 9.78
Console.WriteLine(myInt);      // 输出 9

运行实例 »


类型转换方法

还可以使用内置方法显式转换数据类型,例如 Convert.ToBoolean, Convert.ToDouble, Convert.ToString, Convert.ToInt32 (int) and Convert.ToInt64 (long):

实例

int myInt = 10;
double myDouble = 5.25;
bool myBool = true;

Console.WriteLine(Convert.ToString(myInt));    // 将 int 转换为字符串
Console.WriteLine(Convert.ToDouble(myInt));    // 将 int 转换为 double
Console.WriteLine(Convert.ToInt32(myDouble));  // 将 double 转换为 int
Console.WriteLine(Convert.ToString(myBool));   // 将布尔转换为字符串

运行实例 »

为什么要转换数据类型?

很多时候不需要进行数据类型转换。但有时必须,比如使用用户输入时,请看下一章以查看示例。