我正在做一本书的挑战,它要求我创建一个从 20 倒数到 0 的循环,并让我为每个数字打印一条消息。但是,它要求我为每个可被 5 整除的数字打印一条特殊消息。我见过一些例子,包括这个:
if (number%5==0)
{
//your code here
}
我知道模在做什么,但是为什么这段代码==0
后面有呢?例如,为什么不直接这样编码:
if (number%5)
{
//your code here
}
我正在做一本书的挑战,它要求我创建一个从 20 倒数到 0 的循环,并让我为每个数字打印一条消息。但是,它要求我为每个可被 5 整除的数字打印一条特殊消息。我见过一些例子,包括这个:
if (number%5==0)
{
//your code here
}
我知道模在做什么,但是为什么这段代码==0
后面有呢?例如,为什么不直接这样编码:
if (number%5)
{
//your code here
}
因为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
满足其中任何一个之外,没有任何原语。