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

本文介绍了C#中的索引器(Indexer)概念及其使用方法。索引器使得对象能够像数组一样被引用,提供了更加直观的操作方式。文章通过一个具体的例子展示了如何定义和使用索引器,并解释了其与属性之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        索引器(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关键字来访问的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值