我知道这可能已经在某处得到了回答,我找不到它.为什么C#不允许我使用while(1)?我知道'C#中的bool类型和其他类型之间没有转换',但为什么呢?这是什么原因,在c ++中它是完全可以接受的.
dan*_*ben 20
这是为了防止程序员意外地做一些他们不想做的事情.
考虑一下C/C++中常见的陷阱:
int x = getValue();
if (x = 10) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
这将编译并运行,但产生意想不到的结果(程序员可能意味着检查x等于10,而不是分配x- 否则,他为什么需要测试?它将始终评估为true).
通过强制条件为布尔类型,可以避免此问题.
这是什么原因,在c ++中它是完全可以接受的.
因为C#不是C++.这些语言具有相似的语法,但它们是截然不同的.C#不是C++的继承者,它是一种全新的语言.
我知道'c#中的bool类型和其他类型之间没有转换',但为什么呢?
为什么会这样?在整数和布尔值之间没有我能想到的逻辑转换.
为什么c#不允许我使用while(1)?
使用时真的有问题while(true)吗?=)稍微严肃一点,while(...)基本上是说,"虽然括号内描述的条件评估为真,但执行以下操作".C#编译器实际上没有逻辑方法将1转换为true或false,因此它不允许您使用它.