为什么使用 as 运算符将 int 转换为字符是无效的

本文关键字:字符 无效 转换 int as 运算符 为什么 | 更新日期: 2023-09-27 17:56:42

在C#中有两种强制转换方式:

  • foo as int
  • (int)foo

为什么第一行不编译,第二行编译?

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

为什么使用 as 运算符将 int 转换为字符是无效的

来自 MSDN:

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

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