5

我正在做一本书的挑战,它要求我创建一个从 20 倒数到 0 的循环,并让我为每个数字打印一条消息。但是,它要求我为每个可被 5 整除的数字打印一条特殊消息。我见过一些例子,包括这个:

if (number%5==0)
{
    //your code here
}

我知道模在做什么,但是为什么这段代码==0后面有呢?例如,为什么不直接这样编码:

if (number%5)
{
    //your code here
}
4

1 回答 1

4

因为number%5是 0 到 4 之间的整数,whilenumber%5==0是布尔值。与 C/C++ 等可以将整数视为布尔值(例如 0 -> false,1 -> true)的语言不同,在 C# 中,if 的条件必须是“真正的”布尔值。

(即使 C# 允许您在 if 条件中使用整数,您对代码的建议更改也是不正确的。如果 number%5 为 0,前一段代码将运行您的代码,如果 number 后一段代码将运行您的代码%5 不是 0。)

bool编辑:正如 Eric Lippert 在评论中所说,在if条件中使用 a 的替代方法是使用实​​现implicit operator bool为强制转换或实现运算符的true东西false,例如http://msdn.microsoft.com/en-us/library/ 6x6y6z4d.aspx。但据我所知,除了bool满足其中任何一个之外,没有任何原语。

于 2013-06-04T23:55:04.710 回答