A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 幸福的彼岸 中级黑马   /  2014-1-18 10:08  /  1369 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 幸福的彼岸 于 2014-1-18 20:48 编辑

C#中的索引器只能根据数字进行索引吗?可不就可以有多个索引器参数呀?

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

4 个回复

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

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
索引器的索引关键字的类型可是是多种的,可以使数字,也可以是字符串

参数也可以有多种的

其机制有点像字典  只是要自己写get和set方法

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。它可以使得像数组那样对对象使用下标。它提供了通过索引方式方便地访问类的数据信息的方法。
  要声明类或结构上的索引器,请使用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#并不将索引类型限制为整数。例如,对索引器使用字符串可能是有用的。通过搜索集合内的字符串并返回相应的值,可以实现此类的索引器。由于访问器可被重载,字符串和整数版本可以共存。
回复 使用道具 举报
索引器允许类或结构的实例就像数组一样进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。

在下面的示例中,定义了一个泛型类,并为其提供了简单的 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 索引器分配的值。

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

索引器可被重载。

索引器可以有多个形参,例如当访问二维数组时。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马