我今天早些时候正在玩类型转换,并遇到了一些有趣的东西。 C#编译器无法将0
或1
强制转换为布尔数据类型。例如:
bool b = (bool)0;
将返回false(如果能够编译)。
这里似乎没有任何信息丢失,所以我的问题是,C#编译器是否有一些特殊原因让你不这么做?
答案 0 :(得分:5)
因为为了让您的演员阵容有效,每个 int
必须能够投射到bool
,而不仅仅是1和0。允许所有整数被视为有意义的布尔值,以消除允许在允许的语言中出现的各种错误的可能性,例如C和C ++。