Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 复制字符串数组中的值时,索引超出了数组的边界_C#_C# 4.0 - Fatal编程技术网

C# 复制字符串数组中的值时,索引超出了数组的边界

C# 复制字符串数组中的值时,索引超出了数组的边界,c#,c#-4.0,C#,C# 4.0,当我运行代码时,它说“索引超出了数组的界限。” 字符串xyz=”“;abc:123;234 ;345 ;def:234;456 ;xyz:123;""; 字符串[]lines1=abc.Split(':'); 字符串[]缓冲区1=新字符串[]{}; 对于(int i=0;i

当我运行代码时,它说“索引超出了数组的界限。”

字符串xyz=”“;abc:123;234 ;345 ;def:234;456 ;xyz:123;"";
字符串[]lines1=abc.Split(':');
字符串[]缓冲区1=新字符串[]{};
对于(int i=0;i

buffer1[j]=lines2[j]
中,我正在复制
buffer1
中需要在第二个循环后使用的每个
lines2
的值。但是当我运行代码时,我在那一行遇到了异常。

buffer1
是一个数组,这意味着它是一个固定大小的数组,不能增长到容纳您试图放入的内容。如果您试图访问
buffer1[16]
buffer1
不够大,它将抛出您看到的异常

尝试使用
列表而不是数组

var buffer1=新列表();
foreach(第1行中的字符串项)
{
AddRange(item.Split(新字符[]{';'},StringSplitOptions.RemoveEmptyEntries));
}

这将允许您向buffer1添加任意数量的项目。

不包括buffer1的声明。据我们所知,buffer1可以是长度为1的数组。第二次尝试执行缓冲区[2]时,就会出现此错误。查看您的声明,这就是您的问题。buffer1是长度为0的数组。您不能仅仅添加到它上,并假设大小将动态变化。您应该尝试使用列表,它类似于arraylist,但更好。如果我想使用array而不是list/arraylist。那么我应该如何声明数组?为什么要使用数组而不是列表?使用数组而不是列表不会有任何好的解决方案。因为我在第2行中得到的值,我想以某种特定的方式将这些值放入excel工作表中。。我需要做一个循环。。所以我需要数组。谢谢你的帮助。如果我想使用数组而不是list/arraylist。那么我应该如何声明我的数组?您需要计算出需要进入数组的项目数,然后在实际插入它们之前以适当的大小声明它。为什么要使用数组而不是列表?
string xyz ="";abc: 123 ;234 ;345 ;def: 234 ;456 ;xyz: 123;"";
string[] lines1 = abc.Split(':');
string[] buffer1 = new string[]{};
for (int i = 0; i < lines1.Length; i++)
{
    //string[] lines2 = lines1[i].Split(';');
    string[] lines2 = lines1[i].Split(new char[] { ';' },
                                      StringSplitOptions.RemoveEmptyEntries);
    for (int j = 0; j < lines2.Length; j++)
    {
        buffer1[j] = lines2[j];
    }                
}    
var buffer1 = new List<int>();
foreach (string item in lines1)
{
    buffer1.AddRange(item.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries));
}