C#中简单索引器的实现

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

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

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

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

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

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

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

Code:
  1. /// <summary>   
  2.     /// Student类  具备学生基本属性  一个方法SayHi()   
  3.     /// </summary>   
  4.     public class Student   
  5.     {   
  6.         //构造函数   
  7.         public Student(string name,int age,string hobby)    
  8.         {   
  9.             this.Name = name;   
  10.             this.Age = age;   
  11.             this.Hobby = hobby;   
  12.         }   
  13.   
  14.         private string name;   
  15.   
  16.         public string Name   
  17.         {   
  18.             get { return name; }   
  19.             set { name = value; }   
  20.         }   
  21.   
  22.         private int age;   
  23.   
  24.         public int Age    
  25.         {   
  26.             get { return age; }   
  27.             set { age = value; }   
  28.         }   
  29.   
  30.         private string hobby;   
  31.   
  32.         public string Hobby    
  33.         {   
  34.             get { return hobby; }   
  35.             set { hobby = value; }   
  36.            
  37.         }   
  38.   
  39.         // 方法   
  40.         public void SayHi()    
  41.         {   
  42.             Console.WriteLine("大家好,我是{0},今年{1},我喜欢{2}",Name,Age.ToString(),Hobby);   
  43.         }   
  44.     }  

 

 

Code:
  1. /// <summary>   
  2.    /// Students类,含有两种简答索引器   
  3.    /// </summary>   
  4.    public class Students   
  5.    {   
  6.   
  7.        //构造函数   
  8.        public Students()   
  9.        {   
  10.            stu[0] = new Student("rose",20,"dancing");   
  11.            stu[1] = new Student("jack",21,"football");   
  12.            stu[2] = new Student("mimi",20,"reading");   
  13.        }   
  14.        public Student[] stu = new Student[3];          //Student类型的数组   
  15.   
  16.   
  17.        //简单整数索引器   
  18.        public Student this[int index]    
  19.        {   
  20.            get    
  21.            {   
  22.                return stu[index];   
  23.            }   
  24.        }   
  25.   
  26.        //简单字符串索引器   
  27.        public Student this[string name]    
  28.        {   
  29.            get    
  30.            {   
  31.                int i;   
  32.                bool found = false;   
  33.   
  34.                for (i = 0; i < stu.Length; i++)    
  35.                {   
  36.                    if (stu[i].Name == name)    
  37.                    {   
  38.                        found = true;   
  39.                        break;   
  40.                    }   
  41.                }   
  42.                if (found)   
  43.                {   
  44.                    return stu[i];   
  45.                }   
  46.                else    
  47.                {   
  48.                    return null;   
  49.                }   
  50.            }   
  51.        }   
  52.    }  
Code:
  1. class Program   
  2.     {   
  3.         static void Main(string[] args)   
  4.         {   
  5.             Students stu = new Students();    //实例化一个Students类的对象   
  6.   
  7.             stu[0].SayHi();                   //通过索引查找   
  8.   
  9.             stu["jack"].SayHi();              //通过姓名查找   
  10.         }   
  11.     }  

以上,我们就实现了一个简单的索引器~~~

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值