zoukankan      html  css  js  c++  java
  • 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;}
    }
  • 相关阅读:
    CF896C Willem, Chtholly and Seniorious 珂朵莉树
    LG2495 「SDOI2011」消耗战 虚树
    20191102 「HZOJ NOIP2019 Round #12」20191102模拟
    LG1345 「USACO5.4」Telecowmunication 最小割
    LG1344 「USACO4.4」Pollutant Control 最小割
    POJ1741 Tree 点分治
    [BZOJ2143]飞飞侠 并查集优化最短路
    [NOI.AC#41]最短路 线性基
    [NOI.AC#40]Erlang
    [BZOJ2238]Mst 最小生成树+树链剖分/并查集
  • 原文地址:https://www.cnblogs.com/senyier/p/6617424.html
Copyright © 2011-2022 走看看