【问题标题】:Remove elements from array. index. C#. List<double>从数组中删除元素。指数。 C#。列表<双>
【发布时间】:2013-12-27 14:34:56
【问题描述】:

我需要你的帮助。这是一个简单的问题,我想。 所以。我在 C# 中使用数组工作。

var TinArr = new List<double>();

接下来我有一些元素。例如:

TinArr[0]=0.5;
TinArr[1]=0.6;
TinArr[2]=1.1;
TinArr[3]=1.5;

好的。然后我有删除其中一些的循环:

for (var j = 0; j < TinArr.Count; j++)
  {
     if (TinArr[j] <= 1)
     {
        TinArr.RemoveAt(j);
      }
   }

据我了解,当我删除索引为“0”的元素时,此操作之后索引为“1”的下一个元素将具有索引“0”。也许我错了。如何保存索引?或者也许我应该从头开始循环? 需要您的帮助!谢谢!

【问题讨论】:

    标签: c# arrays list indexing


    【解决方案1】:

    您可以简单地使用RemoveAll 方法:

    TinArr.RemoveAll(x => x <= 1);
    

    但如果需要使用for-loop,则应该从头开始:

    for (var j = TinArr.Count - 1; j >= 0; j--)
    {
        if (TinArr[j] <= 1)
        {
            TinArr.RemoveAt(j);
        }
    }
    

    【讨论】:

    • 嗯..我忘了!谢谢,我马上试试。 "x" - 索引?
    • @Maria lambda 表达式中的x 表示您正在测试以确定是否需要删除它的列表中的项目。
    【解决方案2】:

    倒过来做,比如

    for (var j =TinArr.Count - 1; j >= 0; j--)
    {
     if (TinArr[j] <= 1)
     {
        TinArr.RemoveAt(j);
      }
    }
    

    【讨论】:

      【解决方案3】:

      你几乎是自己做的,只是缺少后减量:

      for (var j = 0; j < TinArr.Count; j++)
          if (TinArr[j] <= 1)
              TinArr.RemoveAt(j--);
      

      【讨论】:

        猜你喜欢
        • 2015-09-14
        • 1970-01-01
        • 1970-01-01
        • 2022-12-23
        • 2014-03-04
        • 1970-01-01
        • 2015-06-12
        • 2013-03-27
        相关资源
        最近更新 更多