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();  } 

       }

    执行结果:

       

    乌龟才背着房子过一辈子
  • 相关阅读:
    CentOS 7.4 安装python3及虚拟环境
    【抓包工具之Fiddler】增加IP列;session高亮
    【抓包工具之Fiddler】导出jmeter脚本
    Python2.7 Centos安装
    Centos 轻松升级 GCC 不改变系统环境
    GraphLab 安装 出错 "Cannot uninstall 'boto'" "Cannot uninstall 'certifi'"
    Centos6 使用 gbdt lightgbm "libc.so.6: version `GLIBC_2.14' not found" "Segment Fault"
    Linux 安装 gbdt xgboost lightgbm
    Sudo Permission Denied
    Linux Load Average高但磁盘IO和CPU占用率不高的可能原因
  • 原文地址:https://www.cnblogs.com/Yellowshorts/p/2922662.html
Copyright © 2011-2022 走看看