使用for循环将所选元素添加到列表中

时间:2014-03-24 11:58:17

标签: c#

我正在尝试使用for循环将除了22和26之外的30的整数6添加到List中。但仍有22和26人加入。我做错了什么?

List<int> lineNumbers = new List<int>();

for (int x = 6; x < 30; x++)
{
  if ((x != 22) || (x != 26))
  {
    lineNumbers.Add(x);                  
  }               
}

如果代码如下所示,则不会添加两个整数:

for (int x = 6; x < 30; x++)
{
  if (x == 22 )
  {
  }
  else if (x == 26)
  {
  }
  else
  {
    lineNumbers.Add(x);              
  }
}

4 个答案:

答案 0 :(得分:1)

您需要将||替换为&&

for (int x = 6; x < 30; x++)
{
  if ((x != 22) && (x != 26))
  {
    lineNumbers.Add(x);                  
  }               
}

或许,更清楚一点:

for (int x = 6; x < 30; x++)
{
  if ((x == 22) || (x == 26))
    continue;

  lineNumbers.Add(x);
}

或者,您可以使用LINQ将其作为单行执行。这不一定更快或任何事情,所以如果您的for循环更清楚,那么请保持原样。

lineNumbers.AddRange(Enumerable.Range(6, 24).Except(new[] { 22, 26 }));

答案 1 :(得分:1)

改变你的条件。使用&&代替||

if ((x != 22) && (x != 26))

答案 2 :(得分:0)

使用&&代替||,因为您希望在两个条件之间进行匹配。

if ((x != 22) && (x != 26))

您也可以使用LINQ执行此操作(不一定是我喜欢LINQ:)

var lineNumbers = Enumerable.Range(6, 30).Except(new[] {22, 26}).ToList();

答案 3 :(得分:0)

if ((x != 22) || (x != 26))替换为if ((x != 22) && (x != 26))

或者你可以使用如下的继续:

for (int x = 6; x < 30; x++)
{
   if ((x == 22) || (x == 26))
       continue;
   else
       lineNumbers.Add(x);                                  
}