System.ArgumentOutOfRangeException:'索引超出范围。从一个列表复制到另一个

时间:2019-10-05 09:58:19

标签: c# list debugging indexing indexoutofrangeexception

我建立了以下程序,但是出现超出范围的错误。基本上,我想将值从一个列表复制到另一个列表(从ab):

List<int> a = new List<int> { 99, 2, 3, 4, 5, 6 };
List<int> b = new List<int>(6);

for ( int i = 0; i < a.ToArray().Length; i++ )
{
  a[i].ToString().Insert(0, b[i].ToString());
}

for ( int i = 0; i < a.ToArray().Length; i++ )
{
  Console.WriteLine(b[i]);
}

Console.ReadKey();

3 个答案:

答案 0 :(得分:1)

只需在第一个列表上调用ToList(),即可将值从第一个列表复制到第二个列表:

List<int> uzytkownik = new List<int>() { 99, 2, 3, 4, 5, 6 };

List<int> uzytkownik1 = uzytkownik.ToList();//only values are copied, not the reference to the first list

for (int i = 0; i < uzytkownik1.Count; i++)
{
    Console.WriteLine(uzytkownik1[i]);
}

Console.ReadKey();

如果必须使用for循环,则:

List<int> uzytkownik = new List<int>() { 99, 2, 3, 4, 5, 6 };

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

for (int i = 0; i < uzytkownik.Count; i++)
{
    uzytkownik1.Add(uzytkownik[i]);
}

for (int i = 0; i < uzytkownik1.Count; i++)
{
    Console.WriteLine(uzytkownik1[i]);
}

Console.ReadKey();

答案 1 :(得分:0)

答案 2 :(得分:0)

List<T>已经具有进行此类工作的方法。 List<T>.AddRange(IEnumerable<T>)

List<int> a = new List<int> { 99, 2, 3, 4, 5, 6 };
List<int> b = new List<int>(6);

b.AddRange( a );

.net fiddle example