无法在C#中将0或1强制转换为布尔值

时间:2013-10-01 00:57:39

标签: c# casting compiler-errors boolean

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

bool b = (bool)0;

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

这里似乎没有任何信息丢失,所以我的问题是,C#编译器是否有一些特殊原因让你不这么做?

1 个答案:

答案 0 :(得分:5)

因为为了让您的演员阵容有效,每个 int必须能够投射到bool,而不仅仅是1和0。允许所有整数被视为有意义的布尔值,以消除允许在允许的语言中出现的各种错误的可能性,例如C和C ++。