我有这段代码:
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
你有什么想法吗?
答案 0 :(得分:3)
基本的“修复”只是试图获取一个值,如果您从中获取的数组足够长:
zc = (columns.Length > poradi_ZC) ? columns.[poradi_ZC] : string.Empty;
...但你必须决定在你的情况下是否有意义,或者是否有其他错误。在任何情况下,这都是您的错误的原因(列包含少于poradi_ZC + 1
元素。)
(请记住,数组索引从0开始,因此第二个元素的位置为columns[1]
,最后一个元素的位置为columns[nrOfItems - 1]
)。