【问题标题】:Insert at a location in ArrayList c#在 ArrayList c# 中的某个位置插入
【发布时间】:2012-10-09 17:21:18
【问题描述】:
ArrayList ArrAcc = new ArrayList(); 
string ArrValue = ClsContractAccount.GetAccount(LngContract, "R"); 
ArrAcc.Insert(1, ArrValue);

当我尝试执行此查询时获取 ArgumentOutOfRangeException 我的执行有什么问题?

【问题讨论】:

  • 你为什么用ArrayList而不是List<>
  • 我知道这是个问题,但我正在转换的系统使用 ArrayList,所以必须自己使用它

标签: c# c#-4.0 arraylist


【解决方案1】:

你必须从 0 索引开始

ArrAcc.Insert(0, ArrValue);

【讨论】:

    【解决方案2】:

    ArrayList 索引是从 0 开始的,...所以你应该使用

    ArrAcc.Insert(0, ArrValue);
    

    ....或更好

    ArrAcc.Add(ArrValue);
    

    顺便说一句,....你应该使用generic版本的ArrayList:List<T>(.NET 2.0+支持)。

    【讨论】:

      【解决方案3】:

      您不能插入到未被占用的位置。您可以添加该项目。

      【讨论】:

      • 您可以插入一个未被占用的位置,但只能插入一个:尚未包含值的最小索引。 (在本例中为 0。)
      【解决方案4】:

      您的索引应该小于 Count 并且在 C# 中一切都是基于 0 的索引。所以,你应该有ArrAcc.Insert(0, ArrValue);

      【讨论】:

        【解决方案5】:

        必须从0开始,可以使用如下代码:

                if (index <= arr.Count)
                    arr.Insert(index, "something");
                else
                    arr.Add("something");
        

        【讨论】:

          【解决方案6】:

          来自MSDN

          当调用方法并且传递给该方法的至少一个 ?arguments 不为 null 且不包含有效值时,将引发 ArgumentOutOfRangeException。

          可以使用您的代码如下:

          ArrayList ArrAcc = new ArrayList(2) {"","" };
              string ArrValue = "Salam";
              ArrAcc.Insert(1, ArrValue)
          

          【讨论】:

            猜你喜欢
            • 2014-02-11
            • 1970-01-01
            • 2015-12-28
            • 2013-07-08
            • 2013-09-30
            • 1970-01-01
            • 2011-10-27
            • 2018-04-19
            • 1970-01-01
            相关资源
            最近更新 更多