索引超出了数组的范围

时间:2013-11-15 08:26:48

标签: c#

我有这段代码:

String Oddelovac = textBox1.Text;                                     
string file = openFileDialog1.FileName;
foreach (String line in File.ReadAllLines(file).Skip(radek))
{
    String[] columns = line.Split(Oddelovac.ToCharArray());
    Mnozstvi = columns[poradi_mnozstvi];
    Prod_cena = columns[poradi_ProdCena];
    Ean = columns[poradi_Ean];
    Cislo = columns[poradi_Cislo];
    Nazev = columns[poradi_Nazev];
    Dan = columns[poradi_Dan];
    ng_Doklad = columns[poradi_NG];
    o1 = columns[poradi_o1];
    o2 = columns[poradi_o2];
    zc = columns[poradi_ZC];
    u1 = columns[poradi_U1];
    Od = columns[poradi_Od];
    MJ = columns[poradi_MJ];
    datum_nahrani = System.DateTime.Now.ToShortDateString();
}

我有这个错误: index is outside the bounds of the array - 在演员zc =列[poradi_ZC]; 错误在poradi_ZC,它有2位数...... 例如:

poradi_o1=8
poradi_o2=9
poradi_ZC=10

你有什么想法吗?

1 个答案:

答案 0 :(得分:3)

基本的“修复”只是试图获取一个值,如果您从中获取的数组足够长:

zc = (columns.Length > poradi_ZC) ? columns.[poradi_ZC] : string.Empty;

...但你必须决定在你的情况下是否有意义,或者是否有其他错误。在任何情况下,这都是您的错误的原因(列包含少于poradi_ZC + 1元素。)

(请记住,数组索引从0开始,因此第二个元素的位置为columns[1],最后一个元素的位置为columns[nrOfItems - 1])。