. range在应该为false时返回true
本文关键字:返回 true false range | 更新日期: 2023-09-27 18:14:21
我有以下内容:
if (settingsAgeFrom > 0 && settingsAgeTo > 0)
{
if (!Enumerable.Range(settingsAgeFrom, settingsAgeTo).Contains(age))
{
canContact = false;
}
}
这主要检查年龄是否在settingsAgeFrom和settingsAgeTo之间
settingsAgeFrom = 18
settingsAgeTo = 20
age = 26
应该返回false并将canContact设置为false,但它会跳过它,说明其有效?
我错过了什么吗?
三个变量都是int类型
你搞错了,Enumerable。范围的第二个参数为count
,它应该是:-
if (!Enumerable.Range(settingsAgeFrom, (settingsAgeTo - settingsAgeFrom) + 1)
.Contains(age))
因此,您的范围将是18 - 20而不是18 - 37(您当前的代码正在生成)。
Enumerable.Range(…)不是(from, to),而是(from, count),试试这个:
if (settingsAgeFrom > 0 && settingsAgeTo > 0)
{
if (!Enumerable.Range(settingsAgeFrom, settingsAgeTo-settingsAgeFrom).Contains(age))
{
canContact = false;
}
}
if (settingsAgeFrom > 0 && settingsAgeTo > 0)
{
canContact = (settingsAgeFrom >= age && age <= settingsAgeTo);
}