0

我有这个代码:

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 - 在 cast zc = columns[poradi_ZC]; 错误在 poradi_ZC 中,它有 2 位数字......示例:

poradi_o1=8
poradi_o2=9
poradi_ZC=10

你有什么想法吗?

4

1 回答 1

3

一个基本的“修复”是仅当您从中获取的数组足够长时才尝试获取一个值:

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

...但是您必须决定这对您的情况是否有意义,或者是否有其他问题。无论如何,这就是您的错误的原因(列包含少于poradi_ZC + 1元素)。

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

于 2013-11-15T08:30:11.603 回答