2

今天早些时候我在玩字体转换,遇到了一些有趣的事情。C# 编译器无法强制转换01转换为布尔数据类型。例如:

bool b = (bool)0;

将返回 false (如果它能够编译)。

这里似乎没有任何信息丢失,所以我的问题是,C# 编译器是否有某些特定原因不允许您这样做?

4

1 回答 1

6

因为为了使您的演员表起作用,每个 int人都必须能够转换为bool,而不仅仅是 1 和 0。不允许所有整数都被视为布尔值的决定是有目的的,以消除种类的可能性在允许的语言(例如 C 和 C++)中,这种容限可以解决的错误。

于 2013-10-01T01:03:22.533 回答