Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# 为什么这会导致';索引超出范围';例外 public void按钮2\u单击(对象发送者,事件参数e) { 字符[]分隔符={',','\r','\n',''}; string[]content=File.ReadAllText(CSV_文件).Split(分隔符); int bounds=(content.GetUpperBound(0));//此内容字符串的边界为96 int i=1; id=newstring[(bounds/4)];//例如索引大小=96/4=24 对于(i=0;i_C#_Arrays_Exception - Fatal编程技术网

C# 为什么这会导致';索引超出范围';例外 public void按钮2\u单击(对象发送者,事件参数e) { 字符[]分隔符={',','\r','\n',''}; string[]content=File.ReadAllText(CSV_文件).Split(分隔符); int bounds=(content.GetUpperBound(0));//此内容字符串的边界为96 int i=1; id=newstring[(bounds/4)];//例如索引大小=96/4=24 对于(i=0;i

C# 为什么这会导致';索引超出范围';例外 public void按钮2\u单击(对象发送者,事件参数e) { 字符[]分隔符={',','\r','\n',''}; string[]content=File.ReadAllText(CSV_文件).Split(分隔符); int bounds=(content.GetUpperBound(0));//此内容字符串的边界为96 int i=1; id=newstring[(bounds/4)];//例如索引大小=96/4=24 对于(i=0;i,c#,arrays,exception,C#,Arrays,Exception,这取决于您实际读取的文件的内容。代码似乎很好。这取决于您实际读取的文件的内容。代码似乎很好。更改更改我相信在上一次迭代中您会得到异常,因为在您访问的上一次迭代中dex(bounds/4),但是索引的有效范围是0到(bounds/4)-1。基本上,您要超过数组的末尾id。您需要更改我相信在上一次迭代中您会得到异常,因为在上一次迭代中,您正在访问索引(bounds/4),但索引的有效范围是0到(bounds/4)-1。基本上,您将超过数组的末尾id。您需要更改以获得最佳编码实践,最好检查For循环中

这取决于您实际读取的文件的内容。代码似乎很好。

这取决于您实际读取的文件的内容。代码似乎很好。

更改
更改
我相信在上一次迭代中您会得到异常,因为在您访问的上一次迭代中dex
(bounds/4)
,但是索引的有效范围是
0
(bounds/4)-1
。基本上,您要超过数组的末尾
id
。您需要更改
我相信在上一次迭代中您会得到异常,因为在上一次迭代中,您正在访问索引
(bounds/4)
,但索引的有效范围是
0
(bounds/4)-1
。基本上,您将超过数组的末尾
id
。您需要更改
以获得最佳编码实践,最好检查For循环中的
id.Length
,而不是检查
边界/4


话虽如此,我相信您应该使用
来获得最佳编码实践,最好检查For循环中的
id.Length
,而不是检查
bounds/4



话虽如此,我相信你应该使用
看起来像是你无意中写的看起来像是你无意中写的。请避免在你的问题标题中包含标记。对不起,标记就足够了吗?是的。标记是SO用户查找相关问题的最常用方式之一,因此如果你觉得有必要对你的问题进行分类请避免在你的问题标题中包含标签。对不起,那么标签就足够了吗?是的。标签是SO用户查找相关问题的最常用方式之一,因此,如果你觉得有必要对你的问题进行分类,以便让人们查找,标签应该是一种方式。总是显而易见的事情……非常感谢。a显而易见的事情……非常感谢。你能给我解释一下最后一行吗?我编码的时间不长。在大多数情况下,创建一个变量然后给它赋值一个“new”是否更好?如果你是新手,这可能很难解释。我会尝试:)Where函数返回所有匹配指定条件(或谓词)的元素。在本例中,它测试每个元素的索引是4的倍数(n%n的倍数始终等于0)。其中返回IEnumerable,因此需要ToArray将其转换回数组。您可以在@Okay cool中找到此函数的文档。%操作数做什么?我想我还得到了其他所有内容(在某种程度上:D)%返回除法的剩余部分。例如8%7=1您能给我解释一下最后一行吗?我编码的时间不长。在大多数情况下,创建一个变量,然后给它赋值一个“new”是否更好?如果您是新手,这可能很难解释。我将尝试:)Where函数返回所有符合指定条件的元素(或谓词)。在本例中,它测试每个元素的索引是否为四的倍数(n%n的倍数始终等于0)。其中返回IEnumerable,因此需要ToArray将其转换回数组。您可以在@Okay cool中找到此函数的文档。%操作数做什么?我想我还得到了其他所有内容(在某种程度上:D)%返回除法的余数。例如8%7=1
    public void button2_Click(object sender, EventArgs e)

    {
        char[] delimiters = { ',', '\r', '\n', ' ' };
        string[] content = File.ReadAllText(CSV_File).Split(delimiters);

        int bounds = (content.GetUpperBound(0)); //bounds of this content string is 96
        int i = 1;
        id = new string[(bounds / 4)]; //for example index size = 96 / 4 = 24

        for (i = 0; i <= (bounds / 4); i++)
        {
            int rows = (i * 4); // gets every 4th value
            id[i] = content[rows]; //inserts row 96 into id 24 - fails here
        }
    }
var delimeters = new[] { ',', '\r', '\n', ' ' };
var content = File.ReadAllText(CSV_File).Split(delimeters);

id = content.Where((n, i) => i % 4 == 0).ToArray();