zoukankan      html  css  js  c++  java
  • C#中索引器的实现 【转】

    索引器允许类或者结构的实例按照与数组相同的方式进行索引。索引器类似属性,但不同之处在于它们的访问器采用参数。它可以像数组那样对对象采用下标。它提供了通过索引方式方便地访问类的数据信息的方法。

    C#并不将索引类型限制为整数,所以我们可以通过访问器的重载,实现整数索引或者字符串索引。

    重载索引器时,要保证形参的数量或形参类型至少有一不同。这一点同C#中方法重载貌似没有什么区别。

    下面我们就通过简单的例子,实现整数索引和字符串索引。

    在这个例子中,我们需创建两个类 --> Student   Students

    Student类中,包含学生基本信息(属性)和一个方法SayHi()

    Students类中,包含我们要创建的两种索引器,一个Student类类型的数组

    //Student类  

    public Class Student

          {        //构造函数 

                public Student(){}  

                public Student(string name,int age,string hobby)   

                      {       

                            this.Name = name;     this.Age = age;    this.Hobby = hobby;    

                       }    //三个属性 (姓名)Name,(年龄)Age,(爱好)Hobby     

                       private string name;    

                       public String Name      

                              {       

                              get{return name;}           set{name = value;}  

                              }     

                         private int age;      

                         public int Age       {           get{return age;}           set{age = value;}       }         

                         private string hobby;    

                         public string Hobby    {        get{return hobby;}            set{hobby = value;}       }     

                    //方法     

                  public void SayHi()    

                    {  Console.WriteLine("大家好,我是{0},今年{1}岁,喜欢 {2}",Name,Age.ToString(),Hobby);    } 

             }  

    //Students类 

      Public Class Students 

              {    //加载时初始化stu数组    

                public Students()     

                     {  stu[0] = new Student("rose",21,"dancing");  

                         stu[1] = new Student("jack",22,"reading");       

                         stu[2] = new Student("mimi",21,"singing");   }   

                    //Student类类型数组属性    

                      private Student [] stu = new Student[3];     

                       //整数索引器    

                       public Student this[int index]       {get{return stu[index];} }    

                            //字符串索引器    

                      public Student this[string name]    

                                {           

                                   get  {  int i ;  bool found = false;  for(i = 0;i < stu.length;i ++)               

                                        { if(stu[i].Name == name)                  

                                             { found = true;  break; } }     

                                          if(found)  { return stu[i]; }                

                                            else  {return null; }  

                                      }     

                                 } 

                 } 

    Public Class Program 

      {      //Main函数中      

               static void Main()   

                          {Students stu = new Students(); 

                            stu[0].SayHi();        //通过索引查找          

                             stu["rose"].SayHi();   //通过姓名查找  

                             Console.ReadKey();  } 

       }

    执行结果:

       

    乌龟才背着房子过一辈子
  • 相关阅读:
    UVA1401 Remember the word DP+Trie
    LG5202 「USACO2019JAN」Redistricting 动态规划+堆/单调队列优化
    模拟赛总结合集
    LG5201 「USACO2019JAN」Shortcut 最短路树
    LG5200 「USACO2019JAN」Sleepy Cow Sorting 树状数组
    LG5196 「USACO2019JAN」Cow Poetry 背包+乘法原理
    20190922 「HZOJ NOIP2019 Round #7」20190922模拟
    LG2530 「SHOI2001」化工厂装箱员 高维DP+记忆化搜索
    LG2893/POJ3666 「USACO2008FEB」Making the Grade 线性DP+决策集优化
    关于对QQ 输入法的评价
  • 原文地址:https://www.cnblogs.com/Yellowshorts/p/2922662.html
Copyright © 2011-2022 走看看