为什么使用as-operator将int转换为char是无效的?

时间:2016-07-12 08:12:57

标签: c# casting

在C#中有两种投射方式:

  • foo as int
  • (int)foo

为什么第一行不编译而第二行呢?

Console.Write(49 as char);
Console.Write((char)49);

1 个答案:

答案 0 :(得分:4)

来自MSDN

  

您可以使用as运算符在兼容的引用类型或nullable types之间执行某些类型的转换。

char既不是引用类型也不是可空类型。它无法将49的输出变量设置为null(转换失败时),因为它不可为空。但它可以与char?一起使用,虽然在这种情况下无用。