我正在从一本书中挑战,它要求我创建一个从20到0倒计时的循环,并让我为每个数字打印一条消息。但是,它要求我为每个可被5整除的数字打印一条特殊信息。我已经看到了一些例子,包括这个:
if (number%5==0)
{
//your code here
}
我得到了modulo正在做的事情,但为什么这段代码后面有==0
?例如,为什么不像这样编码:
if (number%5)
{
//your code here
}
答案 0 :(得分:3)
因为number%5
是0到4之间的整数,而number%5==0
是布尔值。与C / C ++这样的语言不同,其中整数可以被认为是布尔值(例如0 - > false,1 - > true),在C#中,if的条件必须是'real'布尔值。
(即使C#允许你在if条件下使用整数,你建议的代码更改是不正确的。如果数字%5为0,前一段代码将运行你的代码,后一段代码将运行你的代码数字%5不为0时的代码。)
编辑:正如Eric Lippert在评论中所说,在bool
条件中使用if
的替代方法是使用实现implicit operator bool
的东西作为强制转换或实现运算符{{ 1}}和true
,例如http://msdn.microsoft.com/en-us/library/6x6y6z4d.aspx。但据我所知,除了false
之外,没有任何基元满足其中任何一个。