c#索引器

C#索引器


​一:什么是索引器:
     是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。


二:“索引器”典型结构


为了更好的说明 C#“索引器”的功能,参考以下代码:


    class Demo1
    {
        //容纳0个整数的数组
        private int[] _Array = new int[10];

        /// <summary>
        /// 定义索引器
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public int this[int index]
        {
            set
            {
                if (index >= 0 && index <= 10)
                {
                    _Array[index] = value;
                }
            }

            get
            {
                if (index < 0 || index >= 100)
                {
                    return 0;
                }
                else
                {
                    return _Array[index];
                }
            }
        }

        static void Main1(string[] args)
        {
            Demo1 obj = new Demo1();
            obj[0] = 1000;
            obj[1] = 2000;

            //输出
            Console.WriteLine(obj[0]);
            Console.WriteLine(obj[1]);
        }
    }


三:索引器与数组的区别
    1:  索引器的索引值类型不限定为整数
    2:索引器允许重载
    3:索引器具有Get 与 Set 访问器。
 
四: 索引器与属性的区别
    1:索引器以函数签名方式this 来标识,而属性采用名称(名称可以任意)来标识。
    2:索引器可以重载,属性不能。
    3:索引器不能用Static ,而属性可以。


索引器允许重载,给了更清晰的表述,请看如下示例:


    class Demo2
    {
        //容纳0个整数的数组
        private Hashtable _HT = new Hashtable();
        private int[] _Array = new int[10];

        /// <summary>
        /// 定义索引器
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public string this[string index]
        {
            set
            {
                _HT.Add(index,value);
            }

            get
            {
                return _HT[index].ToString();
            }
        }

        /// <summary>
        /// 索引器重载
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public int this[int index]
        {
            set
            {
                if (index >= 0 && index <= 10)
                {
                    _Array[index] = value;
                }
            }

            get
            {
                if (index < 0 || index >= 100)
                {
                    return 0;
                }
                else
                {
                    return _Array[index];
                }
            }
        }

        static void Main(string[] args)
        {
            Demo2 obj = new Demo2();
            obj["zhangSan"] = "张三";
            obj["lisi"] = "李四";
            obj[1] = 3000;
            obj[2] = 4000;

            //输出
            Console.WriteLine(obj["zhangSan"]);
            Console.WriteLine(obj["lisi"]);
            Console.WriteLine(obj[1]);
            Console.WriteLine(obj[2]);
        }
    }


总结:

    C#的索引器的使用概率不是很高,一般都集中在游戏开发人员(程序员)需要开发自己的“自定义集合”类型的时候使用,笔者在下一章节来给大家介绍如何开发自己的“自定义集合”。请大家围观。


  2016年9月5日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信息技术研习社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值