C# 为什么用as运算符将int强制转换为char是无效的?

C# 为什么用as运算符将int强制转换为char是无效的?,c#,casting,C#,Casting,在C中有两种铸造方法: foo as int 英特福 为什么第一行不编译,第二行编译 Console.Write(49 as char); Console.Write((char)49); 发件人: 您可以使用as运算符在兼容的引用类型或类型之间执行某些类型的转换 char既不是引用类型,也不是可为null的类型。转换失败时,它无法将输出变量49设置为null,因为它不可为null。这对char有用吗?虽然,虽然在这种情况下没有用。那么为什么要在其他人可以投票之前删除它呢?我希望最终结果是-1

在C中有两种铸造方法:

foo as int 英特福 为什么第一行不编译,第二行编译

Console.Write(49 as char);
Console.Write((char)49);
发件人:

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


char既不是引用类型,也不是可为null的类型。转换失败时,它无法将输出变量49设置为null,因为它不可为null。这对char有用吗?虽然,虽然在这种情况下没有用。

那么为什么要在其他人可以投票之前删除它呢?我希望最终结果是-10,我不想失去我的评论权限。在问出问题之前不要删除;这是不是每个开发人员都知道,而且只有像我这样的学生才知道?这不是每个人都知道的,但是如果你有更多的经验,你可以从编译器错误消息中找出什么可以使用char??这也不是引用类型。它是文档中引用的类型。@MikeT我相信Lasse知道这一点。他是一位经验丰富的.NET开发人员,请查看他的答案列表。他只是漏掉了一块。我在Linqpad上测试了它,误认为是一个错误。