. 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类型

. range在应该为false时返回true

你搞错了,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);
   }