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

       }

    执行结果:

       

    乌龟才背着房子过一辈子
  • 相关阅读:
    Python拼接字符串的7种方法
    jieba结巴分词
    nginx配置文件的性能优化
    nginx默认的配置文件详解
    CentOS怎样安装Python3.6
    Scrapy爬去哪儿~上海一日游门票并存入MongoDB数据库
    Scrapy模拟登录GitHub
    Scrapy爬豆瓣电影Top250并存入MySQL数据库
    Scrapy爬博客园
    创建第一个Scrapy项目
  • 原文地址:https://www.cnblogs.com/Yellowshorts/p/2922662.html
Copyright © 2011-2022 走看看