在CsvReader
(链接)上看到的所有示例中,读取记录后,可以对CsvReader
对象本身进行索引以检索字段的值。例如:
using (CsvReader csv =
new CsvReader(new StreamReader("data.csv"), true))
{
int fieldCount = csv.FieldCount; //Line X
while (csv.ReadNextRecord())
{
for (int i = 0; i < fieldCount; i++)
Console.WriteLine(csv[i])); //Line Y
}
}
显然csv
是的实例CsvReader
,无论是哪种类型。
在第X行,如果我尝试引用,则会csv[i]
得到System.ArgumentOutOfRangeException
。
在Y行,我可以访问csv[0]
等。[]是什么意思?它不索引数组吗?
csv[i]
由于没有Length
属性,如何动态找出其上限?
有一个实施索引器
public virtual string this[int field]
{
get
{
return ReadField(field, false, false);
}
}
这是异常来自哪里
private string ReadField(int field, bool initializing, bool discardValue)
{
if (!initializing)
{
if (field < 0 || field >= _fieldCount)
throw new ArgumentOutOfRangeException("field", field,
string.Format(CultureInfo.InvariantCulture, ExceptionMessage.FieldIndexOutOfRange, field));
}
它之所以被抛出是因为没有调用ReadNextRecord _fieldCount
就等于0。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句