zoukankan      html  css  js  c++  java
  • 黑马程序员-集合和索引器

    索引器

    为了方便将类、结构或接口当做数组来使用。

    索引器用于封装内部集合或数组

    定义语法

    [访问修饰符] 返回类型 this[索引类型 索引名]

    {

      //get或set方法体

    }

    索引本质就是属性

    利用索引可以用key得到项,亦可用项得到序号

    集合具有很强的通用性(方法名应该记住)

    增加

     Add、AddRange

    移除

     Remove、RemoveAt

    清空

     Clear

    排序

     Sort、Reverse

    查找

     IndexOf、LastIndexOf

    判存

     Contains

    集合的总数

     Count属性

    浅复制

     Clone

     

    索引

    集合也可以通过“下标”来访问,叫做索引

     

    namespace Indexer

    {

        class Program

        {

            static void Main(string[] args)

            {

                MyCollection mc = new MyCollection();

                int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

                // 添加的功能

                mc.Add(100);

                mc.AddRange(nums);

                // 插入,在3位置上添加一个100

                mc.Insert(3, 100);

                // 移除

                //mc.Remove(100);

                mc.RemoveAt(2);

     

                // 清空

                //mc.Clear();

                // 读取位置为3的数据

                Console.WriteLine(mc[2]);

     

                Console.ReadKey();

            }

        }

     

        // 咱们手动写一个集合

        class MyCollection

        {

            //int[] nums;

            ArrayList al;

            // 用来测试的方法

            private void Test()

            {

                this.Clear();

                // this在类的内部,表示当前实例

                //this[3];

            }

     

            //索引

            //索引的本质是属性;属性的本质是方法。

            public object this[int index]

            {

                get { return al[index]; }

                set { al[index] = value; }

            }

     

            public MyCollection()

            {

                al = new ArrayList();

            }

     

            // Add方法

            // 最不好的办法

            #region 不好的方法

            //public int Add(int num)

            //{

            //    if (nums == null)

            //    {

            //        nums = new int[] { num };

            //    }

            //    else

            //    {

            //        int[] temp = new int[nums.Length + 1];

            //        for (int i = 0; i < nums.Length; i++)

            //        {

            //            temp[i] = nums[i];

            //        }

            //        temp[temp.Length - 1] = num;

            //        nums = temp;

            //    }

            //    return nums.Length + 1;

            //}

            #endregion

     

            public int Add(object o)

            {

                return al.Add(0);

            }

            public void AddRange(ICollection ic)

            {

                al.AddRange(ic);

            }

     

            public void Remove(object o)

            {

                al.Remove(o);

            }

            public void RemoveAt(int index)

            {

                al.RemoveAt(index);

            }

     

            public void Clear()

            {

                al.Clear();

            }

     

            public void Insert(int index, object o)

            {

                al.Insert(index, o);

            }

        }

    }

     

  • 相关阅读:
    jsp教程
    域名解析配置
    ulimit调优|设置普通用户的ulimit值
    进程之间的通信方式
    javascript中的发布订阅模式与观察者模式
    浏览器提供的几种存储
    jquery库与其他库(比如prototype)冲突的解决方法
    流量削峰
    微服务架构下的安全认证与鉴权
    windows远程桌面无法拷贝文件的问题与解决方法
  • 原文地址:https://www.cnblogs.com/xsj891107/p/3664048.html
Copyright © 2011-2022 走看看