C#表达式结果。怎么了?
我试图计算一些项目要显示的页面数,我发现这个结果很有趣,也许你可以帮助我理解我在这里做错了什么C#表达式结果。怎么了?,c#,.net-core,C#,.net Core,我试图计算一些项目要显示的页面数,我发现这个结果很有趣,也许你可以帮助我理解我在这里做错了什么 var totalItems = 11; var pageSize = 5; 案例A. var pages = (totalItems / pageSize) + (totalItems % pageSize) > 0 ? 1 : 0; var remainder = totalItems % pageSize; var extrapage = remainder > 0 ? 1 :
var totalItems = 11;
var pageSize = 5;
案例A.
var pages = (totalItems / pageSize) + (totalItems % pageSize) > 0 ? 1 : 0;
var remainder = totalItems % pageSize;
var extrapage = remainder > 0 ? 1 : 0;
var pages = (totalItems / pageSize) + extrapage;
案例B.
var pages = (totalItems / pageSize) + (totalItems % pageSize) > 0 ? 1 : 0;
var remainder = totalItems % pageSize;
var extrapage = remainder > 0 ? 1 : 0;
var pages = (totalItems / pageSize) + extrapage;
所以基本上,外部页面
这里是(totalItems%pageSize)>0?案例A中的1:0
案例A给出页面==1
。为什么3
与案例B不一样
案例B给出了
页面==3
,这是我案例的正确答案。案例A返回1,因为系统按如下方式计算:
var pages = ( (totalItems / pageSize) + (totalItems % pageSize) > 0 ) ? 1 : 0;
它围绕整个左侧设置括号,括号总是大于零,因此返回1
设置括号
var pages = (totalItems / pageSize) + ( (totalItems % pageSize) > 0 ? 1 : 0 );
它只给你一页,因为页数的计算是错误的。 基本上在这里
var页面=(totalItems/pageSize)+(totalItems%pageSize)>0?1 : 0;代码>
您正在执行一个if
表达式,该表达式将返回1
或0
所有这些代码(totalItems/pageSize)+(totalItems%pageSize)
都是代码中的if语句,而不仅仅是(totalItems%pageSize)
因此,要修复它,您必须将其拆分为案例2,或者将第二个条件放在括号中,如下所示:
var pages = (totalItems / pageSize) + ((totalItems % pageSize) > 0 ? 1 : 0);
这是因为+运算符的阶数高于逻辑>运算符。因此,在cas A中,您需要询问(totalItems/pageSize)+(totalItems%pageSize)之和是否大于0。只要把正确的括号放在错误的括号位置。请参阅“评估的优先级和顺序”: