C# Streamreader和;索引超出了数组的边界;错误

C# Streamreader和;索引超出了数组的边界;错误,c#,arrays,csv,streamreader,C#,Arrays,Csv,Streamreader,我没有写入任何数组长度,但是当我尝试读取.csv文件时,我得到了“索引超出了数组的边界”错误。csv文件大约有1000行。是否有人修复此代码 .csv文件行如下所示 0000000,26.0000000000000,38.0000000000000,30.01.2017,0,0,0,0,0,0,0,0,0,0 我只是想为所有来到这里的人澄清一下答案 while ((data=sr.ReadLine()) !=null) { read = d

我没有写入任何数组长度,但是当我尝试读取.csv文件时,我得到了“索引超出了数组的边界”错误。csv文件大约有1000行。是否有人修复此代码

.csv文件行如下所示

0000000,26.0000000000000,38.0000000000000,30.01.2017,0,0,0,0,0,0,0,0,0,0


我只是想为所有来到这里的人澄清一下答案

        while ((data=sr.ReadLine()) !=null)
        {
            read = data.Split(seperators, StringSplitOptions.None);
            if (read.Length >= 11)
            {
                float x = float.Parse(read[1]);
                float y = float.Parse(read[2]);
                string z = read[10];
            }
        }
访问可能不是所需长度的数组时,请先检查它


索引超出了数组的界限
只有当一行代码试图访问数组中不存在的项(N-1)时才会引发异常-因为在调试模式下,数组中的项少于(N)

,请查看这些行
float x=float.Parse(读取[1]);float y=float.Parse(读[2]);字符串z=读取[10]如果read.Length>=11,您可能需要一个if条件。在调试模式下,这些行中没有错误。在调试模式下,visual studio中的一切看起来都是正确的。这是运行时错误,请在此行上放置断点,并检查是否存在
read.Length>=11
,因为read.Length>=11的@Ben saidif条件适用于代码。非常感谢你的帮助。
        while ((data=sr.ReadLine()) !=null)
        {
            read = data.Split(seperators, StringSplitOptions.None);
            if (read.Length >= 11)
            {
                float x = float.Parse(read[1]);
                float y = float.Parse(read[2]);
                string z = read[10];
            }
        }