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

老盖泽

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

可以像数组一样访问Javascript对象吗?

为什么我可以在C#中像数组一样初始化List?

为什么我可以像数组一样将命名属性添加到数组中?

jQuery对象如何使用索引来访问像数组一样的DOM?

为什么我可以像调用实例方法一样调用类方法?

为什么在声明时可以像数据源一样使用Regex类

重新构造界面;为什么我可以像上课一样使用它?

在JS中像数组一样解构对象?

像数组一样初始化类对象

Laravel如何像数组一样使用app对象?

如何像数组集合一样编辑对象

获取像数组一样命名的对象的值

为什么不能像变量一样覆盖管道?

为什么这个CTE像柜台一样?

使用对象表示法就像是数组一样-为什么要求值?

如果javac是用Java编写的,为什么我可以像执行非java程序一样执行javac?

像文件对象一样的BytesIO

像数组一样访问Viewbag?

ViewBag像数组一样使用

从数组创建对象,像数组内部一样严格排序

如何将我的对象像数组一样与map函数一起使用

为什么不能将Go slice用作Go映射中的键,就像数组可以用作键一样?

为什么唯一命令像交叉命令一样起作用?

可以像参数字典一样枚举Dapper DynamicParameters对象吗?

Python:我们可以像 ts 一样从 dict 或对象中获取值吗?

为什么我可以像原始类型一样测试包装程序的不平等性?我可以为自己创建的课程做吗?

Android是否可以像整数数组一样存储可绘制的ID?

我可以像`delete []`一样获得动态分配数组的大小吗?

在GDB中,您可以像设置为char数组一样设置内存吗?