SqlDataReader阅读器
SqlDataReader.Item属性:http://msdn.microsoft.com/zh-cn/library/y64yaah2.aspx
那获取第6行的数据,为什么是SqlDataReader[5],而不是SqlDataReader.Item(5)同样,List集合的Item属性,第6个元素,为什么是写的List[5],而不是写的List.Item(5)MSDN明明写的是Item属性,那就应该.Item(),这种写法啊,为什么没有出现Item这个单词呢?

解决方案 »

  1.   

    SqlDataReader.Item[5] 也可以,不过传递出来的是 object 类型,需要强制类型转换。这个方法叫索引器,所以它的调用和普通方法不同(这是C#语法决定的),应该用方括号。
      

  2.   

    对于所有 this[T x]这类索引器,c#程序中都可以简写成这样。所以这也算是c#标准语法。
      

  3.   

    sp1234说的对,我看错了。类似的,属性也是这样,比如
    public int X { get; }
    其实会产生一个叫 public int get_X() 的方法。
    但是你不能在C#里面直接调用它。
      

  4.   

    http://msdn.microsoft.com/zh-cn/library/2549tw02.aspx
      

  5.   

    楼上各位朋友都是说的索引器,索引器我知道
    我就是想问Item属性
      

  6.   

    一种从 SQL Server 数据库读取行的只进流的方式为什么是写的List[5],而不是写的List.Item[5]1.List本身就是Items  如果用第二种写法 =Items.Items[5].这不是重复了吗?
    ListBox不同,它本身除了Items数据..还是个显示控件.还有其他属性.
    List这样的只是存放数据.没有其他玩意了.所以可以直接用.
    2.C#的发展方向是高速开发..尽量少写代码.只要功能一样.哪个代码短用哪个
      

  7.   

    其实没有一个叫做“Item”的属性(可以转到SqlDataReader的定义查看)
    这个Item应该只是MSDN上的一个写法,“Item”表明其是一个索引器
      

  8.   

    在c#代码中写作 R this[T x] 的这类东西,经过c#编译器编译器编译后就是 Item 属性。
      

  9.   

    vb.net中属性是可以有参数的!但是c#的语法设计中,不支持属性有参数。所以c#语法中额外多出来个索引器概念。看msdn:http://msdn.microsoft.com/zh-cn/library/4bsztef7(v=vs.80).aspx
    虽然它描述的是“索引器与属性的比较”,但是这篇文章是站在c#语言角度而言,说的是“c#的属性”,而不是站在通用的.net的角度说“.net的属性”。这正是因为c#根本不支持有参数的属性,因此才额外多出来这个文章来对比一下。因此,当你将.net通用的文档看作是c#的文档,就会误解了。你看到的是.net属性,这个不假。但是它只能用vb.net等其它语言编译器去编写,而c#根本不支持带参数的属性,只是对于Item属性(而且只能有一个参数)“额外开恩”地定义了一个索引器概念来访问它。
      

  10.   

    你使用c#没有办法访问有参数的Item属性!要注意。
      

  11.   

    Item 其相关属性根据定义数据的数据类型而细化,撇开具体的类来单看Item意义不大。
    另外你看的msdn我想是中文版的,做一个提示:计算机说明在E转C时意思会跑题,大家都懂得。