Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么对象可以像数组一样索引?_C#_Lumenworks - Fatal编程技术网

C# 为什么对象可以像数组一样索引?

C# 为什么对象可以像数组一样索引?,c#,lumenworks,C#,Lumenworks,在我在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

在我在
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
    }
}
使用(CsvReader csv=
新的CsvReader(新的StreamReader(“data.csv”),真)
{
int fieldCount=csv.fieldCount;//第X行
而(csv.ReadNextRecord())
{
对于(int i=0;i
显然,
csv
CsvReader
的一个实例,不管它是什么类型

在X行,如果我尝试引用
csv[I]
我会得到一个
系统.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));
 }
私有字符串读取字段(int字段、bool初始化、bool值)
{
如果(!正在初始化)
{
如果(字段<0 | |字段>=\u字段计数)
抛出新ArgumentOutOfRangeException(“字段”),字段,
Format(CultureInfo.InvariantCulture,ExceptionMessage.FieldIndexOutFrange,field));
}

之所以抛出它,是因为不调用
ReadNextRecord\u fieldCount
等于0。

在第X行,
i
是未定义的。您如何在那里引用
csv[i]