C# 索引器方法

使用索引操作 [] 访问包含在一个标准数组中的各个子项。

定义:把能使用索引操作符 [] 访问子项的方法称为索引器方法

1、自定义索引器方法(this):

public class PeopleCollection : IEnumerable
{
       private ArrayList arPeople= new ArrayList();
       // 类的自定义索引器
       public Person this [int index]   // 除了多个this关键字外,和属性声明很相似
      {
             get{ return (Person)arPeople[index];}
             set{ arPeople.Insert(index,value);} // 使用ArrayList的Insert()方法
      }
}

2、泛型类型直接支持索引器方法:

List<Person> myPeople=new List<Person>();
myPeople.Add(new Person {"lisa","simpson",19});
myPeople.Add(new Person {"lilei","simpson",20});
// 使用索引器修改第一个值
myPeople[0]=new Person {"zhangsan","simpson",20} ;
...

3、使用字符串值索引对象

如果直接使用泛型 Dictionary<TKey,TValue>类型,可以直接获得索引器方法功能,而不用自己去构建

public class PeopleCollection : IEnumerable
{
       private Dictionary<string,Person> listPeople= new Dictionary<string,Person>();
       // 基于一个字符串索引返回一个Person
       public Person this [string name]
      {
             get{ return (Person)listPeople[name];}
             set{ listPeople[name]=value;}
      }
 ...
}

4、重载索引器方法

索引器方法可以在单个类或结构上被重载。

//DataTableCollection类型,重载的索引器
public DataTable this[string name] {get;}
public DataTable this[string name,string tableNamespace]{get;}
public DataTable this[int index]{get;}

5、多维索引器:典型代表是ADO.NET中的 DataTable

private int[,] myArray = new int[10,10];

public int this[int row ,int colum]
{/* 从二位数组中取值或赋值*/}

6、接口类型上定义索引器

在接口定义索引器,其实现类就可以提供自定义实现

public interface IStringContainer
{
     //该接口定义了一个索引器,该索引器基于数字索引返回字符串
     string this[int index] {get;set;}
}
时间: 2024-11-08 23:15:46

C# 索引器方法的相关文章

C# 索引器,实现IEnumerable接口的GetEnumerator()方法

当自定义类需要实现索引时,可以在类中实现索引器. 用Table作为例子,Table由多个Row组成,Row由多个Cell组成, 我们需要实现自定义的table[0],row[0] 索引器定义格式为 [修饰符] 数据类型 this[索引类型 index] 以下是代码 1 /// <summary> 2 /// 单元格 3 /// </summary> 4 public class Cell 5 { 6 /// <summary> 7 /// Value 8 /// <

C#中方法,属性与索引器

C#中方法,属性与索引器: TODO: 1,关于系统中经常出现的通过某一字段,查询对应实体信息(可能是一条字段或一条数据和一组泛型集合) 讲解篇:1,方法,2,属性3,索引器 1,方法(1,根据状态编码返回状态名称:一条字段2,根据状态返回一条数据:实体) 1,根据状态编码返回状态名称:一条字段 /// <summary> /// 根据状态返回状态名称 /// </summary> /// <param name="value"></param

索引器(C# 编程指南)

索引器(C# 编程指南) Visual Studio 2015 其他版本 索引器允许类或结构的实例就像数组一样进行索引. 索引器类似于属性,不同之处在于它们的取值函数采用参数. 在下面的示例中,定义了一个泛型类,并为其提供了简单的 get 和 set 取值函数方法(作为分配和检索值的方法). Program 类创建了此类的一个实例,用于存储字符串. C# class SampleCollection<T> { // Declare an array to store the data elem

《Inside C#》笔记(六) 属性、数组、索引器

一 属性 a) 属性可用于隐藏类的内部成员,对外提供可控的存取接口.属性相当于有些语言的getter.setter方法,只是使用起来更加方便一点,而且查看对应的IL码可以看到,属性的本质也确实是方法. b) 通过只提供get,可以让属性只读.只写属性也可以,但没有用过. c) 属性除了用来控制对类成员的访问外,还可以在get或set的时候通过编码进行一些附加的动作. d) 属性也可以被继承.重写. 二 数组 a) 在C#中,所有数组都继承自System.Array类.数组也是对象,所以声明的数组

接口、索引器、Foreach的本质(学习笔记)

接口 什么是接口? 接口代表一种能力,和抽象类类似但比抽象类的抽象程度更高! 接口的定义: 1 public interface IEat//定义一个接口 2 { 3 void Eat(string food);//为该接口定义一种能力 4 } 接口的定义 从上边的例子中我们可以看到,接口中的方法是没有方法体的甚至连访问修饰符都没有.而且在接口中只能有方法.属性.索引器及事件! 接口的使用: 1 public class Dog:IEat //Dog类实现IEat接口 2 { 3 //Dog类实

C#入门--索引器

C#入门--索引器 索引器允许类或结构的实例按照与数组相同的方式进行索引.索引器类似于属性,不同之处在于它们的访问器采用参数. 索引器概述 索引器使得对象可按照与数组相似的方法进行索引. get 访问器返回值.set 访问器分配值. this 关键字用于定义索引器. value 关键字用于定义由 set 索引器分配的值. 索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制. 索引器可被重载. 索引器可以有多个形参,例如当访问二维数组时. class SampleCollection<T

C#中常用的索引器

之前了解过索引器,当时还把索引器和属性给记混了, 以为索引器就是属性,下面写下索引器和属性的区别,以及怎么使用索引器 先说明一点,这里的索引器和数据库中的索引不一样,虽然都是找元素. 索引器和属性的区别: 属性是以名称来标识,而索引器是以函数的形式来标识(但是索引器不能完全理解为函数): 索引器可以被重载,而属性没有重载这一说法: 索引器不能声明为static,而属性可以: 还有一点就是索引很像数组,它允许一个对象可以像数组一样被中括号 [] 索引,但是和数组有区别,具体有: 数组的角标只能是数

010.里式转换、命名空间、字段属性、索引器

1.is asis:判断对象和类型的兼容 兼容---true 不兼容---false 子类兼容父类 子类对象 is 父类类型 --true对象 is 类型 (对象为此类型的对象 对象为此类型的子类的对象 --true)public class Person{}public class Student:Person{} Person per=new Person();Student stu=new Student();Person person=new Student();返回true:per i

索引器、哈希表Hashtabl、字典Dictionary(转)

一.索引器 索引器类似于属性,不同之处在于它们的get访问器采用参数.要声明类或结构上的索引器,使用this关键字. 示例: 索引器示例代码 /// <summary>/// 存储星期几的类.声明了一个get访问器,它接受字符串,并返回相应的整数/// </summary>public class 星期{    public string[] weeks = { "星期日", "星期一", "星期二", "星期三