在C#中有两种投射方式:
foo as int
(int)foo
为什么第一行不编译而第二行呢?
Console.Write(49 as char);
Console.Write((char)49);
答案 0 :(得分:4)
来自MSDN:
您可以使用as运算符在兼容的引用类型或nullable types之间执行某些类型的转换。
char
既不是引用类型也不是可空类型。它无法将49
的输出变量设置为null
(转换失败时),因为它不可为空。但它可以与char?
一起使用,虽然在这种情况下无用。