C#2.0类和对象学习系列之索引器

        索引器(Indexer)是C#引入的一个新型的类成员,它使得对象可以像数组那样被方便,直观的引用。索引器非常类似于我们前面讲到的属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用 。

       C# 允许将某些对象视为一维或多维数组。实际上,c#允许在对象后面紧跟【】运算符。该运算符可以接受一个或多个任意类型的参数(整数,字符串,任何类的对象。。。。)。这些参数用逗号隔开。

        类的索引器可以看为特殊的属性,索引器的两个访问器之一是可选的,但至少要有一个访问器。索引器的参数不能用ref或者out关键字修饰。

       

  public   class  Persons
    {
        
// 存放名字的数组
         string [] m_Names;

        
// 构造函数初始化m_Names数组
         public  Persons( params   string [] names)
        {
            m_Names 
=   new   string [names.Length];

            
// 将名字复制入数组
            names.CopyTo(m_Names,  0 );
        }

        
// 根据姓名返回索引 
         public   int   this [ string  name]
        {
            
get  
            {
                
return  Array.IndexOf(m_Names, name); 
            }
        }

        
public   string   this [ int  index]
        {
            
// 根据索引返回姓名
             get
            {
                
return  m_Names[index];
            }
            
set  
            {
                m_Names[index] 
=  value;
            }
        }
    }
    
class  Program
    {
        
static   void  Main( string [] args)
        {
            Persons person 
=   new  Persons( " Mike " " Kobe " " Tim " " Allen " );
            Console.WriteLine(person[
1 ]);
            
int  index  =  person[ " Kobe " ];
            person[index] 
=   " Shaqe " ;
            Console.WriteLine(person[index]);
        }

    }

 

通常,实现了索引的类必须支持使用foreach和in关键字来访问的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值