zoukankan      html  css  js  c++  java
  • 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日

  • 相关阅读:
    入门OJ 4187【周末舞会】
    入门OJ 1532【排队取款】
    洛谷 P3029 [USACO11NOV]【牛的阵容Cow Lineup】
    洛谷 P1638【逛画展】
    入门OJ 1256【排队】
    PKU 1945【Power Hungry Cows】
    RocketMQ重试机制和消息
    Java操作RocketMQ
    RocketMQ概述
    重定向机制
  • 原文地址:https://www.cnblogs.com/LiuGuozhu/p/5841821.html
Copyright © 2011-2022 走看看