黑马程序员技术交流社区

标题: C#中的索引器怎么使用呀? [打印本页]

作者: 幸福的彼岸    时间: 2014-1-18 10:08
标题: C#中的索引器怎么使用呀?
本帖最后由 幸福的彼岸 于 2014-1-18 20:48 编辑

C#中的索引器只能根据数字进行索引吗?可不就可以有多个索引器参数呀?
作者: 许庭洲    时间: 2014-1-18 13:20
1.索引器允许类或结构的实例就像数组一样进行索引;
2.索引器类似于属性,不同之处在于它们的访问器采用参数;
3.使用索引器可以用类似于数组的方式为对象建立索引。
4.get 访问器返回值。set 访问器分配值。
5. this 关键字用于定义索引器。
6.value 关键字用于定义由 set 索引器分配的值。
7.索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。
8.索引器可被重载。
9.索引器可以有多个形参,例如当访问二维数组时。
   


作者: 念~    时间: 2014-1-18 17:18
索引器的索引关键字的类型可是是多种的,可以使数字,也可以是字符串

参数也可以有多种的

其机制有点像字典  只是要自己写get和set方法
作者: 王忠杰    时间: 2014-1-19 12:00
索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。它可以使得像数组那样对对象使用下标。它提供了通过索引方式方便地访问类的数据信息的方法。
  要声明类或结构上的索引器,请使用this关键字,例如:
  public int this[int index]  //声明索引器
  {
  // get and set 访问
  }
  索引器的修饰符有:new、public、protected、internal、private、virtual、sealed、override、abstract和extern。当索引器声明包含extern修饰符时,称该索引器为外部索引器。因为外部索引器声明不提供任何实际的实现,所以它的每个访问器声明都由一个分号组成。
  索引器的签名由其形参的数量和类型组成。它不包括索引器类型或形参名。如果在同一类中声明一个以上的索引器,则它们必须具有不同的签名。
索引器值不归类为变量;因此,不能将索引器值作为ref或out参数来传递。
  下面用一个例子来说明如何声明和使用索引器。
  在本示例中,定义了一个泛型类,并为其提供了简单的get和set访问器方法(作为分配和检索值的方法)。Program 类为存储字符串创建了此类的一个实例。代码如下:
class SampleCollection<T>
{
  private T []arr=newT[100];
  public T this[inti]
  {
    get
    {
      returnarr[i];
    }
    set
    {
      arr[i]=value;
    }
  }
}
  下面是如何使用上述代码实现的索引器,具体代码示例如下:
classProgram
{
  staticvoidMain(string[]args)
  {
    SampleCollection <string> 锁=newSampleCollection<string>();
    s[0]="索引器的使用";
    System.Console.WriteLine(锁[0]);
  }
}
  C#并不将索引类型限制为整数。例如,对索引器使用字符串可能是有用的。通过搜索集合内的字符串并返回相应的值,可以实现此类的索引器。由于访问器可被重载,字符串和整数版本可以共存。
作者: yuanlianxi03    时间: 2014-1-19 21:58
索引器允许类或结构的实例就像数组一样进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。

在下面的示例中,定义了一个泛型类,并为其提供了简单的 get 和 set 访问器方法(作为分配和检索值的方法)。Program 类为存储字符串创建了此类的一个实例。

C#  复制代码
class SampleCollection<T>
{
    private T[] arr = new T[100];
    public T this[int i]
    {
        get
        {
            return arr[i];
        }
        set
        {
            arr[i] = value;
        }
    }
}

// This class shows how client code uses the indexer
class Program
{
    static void Main(string[] args)
    {
        SampleCollection<string> stringCollection = new SampleCollection<string>();
        stringCollection[0] = "Hello, World";
        System.Console.WriteLine(stringCollection[0]);
    }
}




索引器概述
使用索引器可以用类似于数组的方式为对象建立索引。

get 访问器返回值。set 访问器分配值。

this 关键字用于定义索引器。

value 关键字用于定义由 set 索引器分配的值。

索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。

索引器可被重载。

索引器可以有多个形参,例如当访问二维数组时。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2