美文网首页C#
面向对象(十三)-索引器

面向对象(十三)-索引器

作者: 元宇宙协会 | 来源:发表于2017-12-10 21:32 被阅读33次

1. 简介:

索引器允许类或结构的实例就像数组一样进行索引。 索引器类似于属性,不同之处在于它们的取值函数采用参数。 典型用法 数组中[]

2. 语法:

关键字符:this[]

    class IndexTest
    {
        private int[] arrayInts = new[] { 1, 2, 3, 4, 5, 6, 7, 8 };
        
        public int this[int index]
        {
            get { return arrayInts[index]; }
            set { arrayInts[index] = value; }
        }
    }

    // 使用该类
    class Program
    {
        static void Main(string[] args)
        {
            IndexTest test = new IndexTest();
            Console.WriteLine(test[5]); // 6
            Console.ReadKey();
        }
    }

3. 索引器概述:

  • 使用索引器可以用类似于数组的方式为对象建立索引。

  • get 取值函数返回值。 set取值函数分配值。

  • this关键字用于定义索引器。

  • value 关键字用于定义由 set 索引器分配的值。

  • 索引器不必根据整数值进行索引;由你决定如何定义特定的查找机制。

  • 索引器可被重载。

  • 索引器可以有多个形参,例如当访问二维数组时。

4. 索引器其他用法:

  • 1> 索引器可以有多个形参,例如多维数组的用法。
       public int this[int index1,int index2]
        {
            get
            {
                if (index1 > MyInt1.Length)
                {
                    throw new Exception("超出异常");
                }
                else
                {
                    return MyInt1[index1,index2];
                }
            }
            set {
                MyInt1[index1,index2] = value;
            }            
        }    

        // 调用:
        static void Main(string[] args)
        {
            IndexTest test = new IndexTest();
            Console.WriteLine(test[12,6]); 
            Console.ReadKey();
        }
  • 2> C# 并不将索引类型限制为整数。 例如,对索引器使用字符串可能是有用的。 通过搜索集合内的字符串并返回相应的值,可以实现此类索引器。

案例说明:在此例中,声明了存储星期几的类。 声明了一个 get
访问器,它接受字符串(天名称),并返回相应的整数。 例如,星期日将返回 0,星期一将返回 1,等等。

        class DayCollection
        {
            string[] days = { "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat" };

            // This method finds the day or returns -1
            private int GetDay(string testDay)
            {

                for (int j = 0; j < days.Length; j++)
                {
                    if (days[j] == testDay)
                    {
                        return j;
                    }
                }

                throw new System.ArgumentOutOfRangeException(testDay, "testDay must be in the form \"Sun\", \"Mon\", etc");
            }

            // The get accessor returns an integer for a given string
            public int this[string day]
            {
                get
                {
                    return (GetDay(day));
                }
            }
        }

        class Program
        {
            static void Main(string[] args)
            {
                DayCollection week = new DayCollection();
                System.Console.WriteLine(week["Fri"]);

                // Raises ArgumentOutOfRangeException
                System.Console.WriteLine(week["Made-up Day"]);

                // Keep the console window open in debug mode.
                System.Console.WriteLine("Press any key to exit.");
                System.Console.ReadKey();
            }
        }
        // Output: 5

作者:silence_k
链接:http://www.jianshu.com/p/44806f324193
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • 面向对象(十三)-索引器

    1. 简介: 索引器允许类或结构的实例就像数组一样进行索引。 索引器类似于属性,不同之处在于它们的取值函数采用参数...

  • 构造函数及jQuery基础

    闭包存循环索引 面向对象 单体创建对象 工厂模式 构造函数 继承 jQuery部分选择器 增删样式 点击事件 获取索引值

  • 「JS」面向对象

    面向对象程序设计方法面向过程面向对象概念基本特点 JavaScript 面向对象constructor自定义构造器...

  • 索引器, 正则表达式(Regex)

    /* * 索引器: * 作用:让对象具有快速访问元素的能力 * 索引器和数组的区别: * 1.索引器的索引类型不限...

  • Javascript-高级篇之面向对象

    面向对象 基于原型的面向对象 基于原型的面向对象方式中,对象(object)则是依靠构造器(constructor...

  • Python面向对象1

    Python支持多种编程方式:面向过程,面向对象,面向切面(装饰器部分)等 OOP思想 面向对象的基本哲学:世界是...

  • 从基础代码深入js面向对象

    认识面向对象 1、面向对象中的概念: 一切事物皆对象 对象具有封装和继承特性 信息隐藏 基本面向对象 函数构造器构...

  • 搜索引擎Lucene(4):索引的创建过程

    1、索引维护 创建索引的过程如下: 建立索引器 Indexwriter。 建立文档对象 Document。 建立信...

  • 10-23学习总结

    今天继续学习了C#第四章面向对象程序设计 1.索引器(indexer)允许class、struct的实例像数组一样...

  • Python基础语法——面向对象(下)

    面向对象三大思想:封装、继承、多态。 可参考一些优质文章: 关于面向对象的相关理解解释: 面向对象基础 装饰器、类...

网友评论

    本文标题:面向对象(十三)-索引器

    本文链接:https://www.haomeiwen.com/subject/vatbixtx.html