索引器和类数组以及属性的区别

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Windows.Forms;

namespace @string
{
    class Program
    {
        static void Main(string[] args)
        {
            change[] arri=new change[10];
            arri[0]=new change(1);
            arri[1]=new change(2);
            arri[2]=new change(3);
            arri[3]=new change(4);
            arri[4]=new change(5);
            Console.WriteLine(arri[0].Id);
            Console.WriteLine(arri[1].Id);
            Console.WriteLine(arri[2].Id);
            Console.WriteLine(arri[3].Id);
            Console.WriteLine(arri[4].Id);
            index indexertest = new index();
            indexertest[0] = 6;
            indexertest[1] = 7;
            indexertest[2] = 8;
            indexertest["3"] = 9;
            indexertest["4"] = 10;
            Console.WriteLine(indexertest[0]);
            Console.WriteLine( indexertest[1]);
            Console.WriteLine( indexertest[2]);
            Console.WriteLine(indexertest[3]);
            Console.WriteLine(indexertest[4]);
        }
    }
    class change//没有用indexer
    {
       
        private readonly int _id;

        public change(int i)
        {
            this._id=i;
        }
        public int Id
        {
            get { return _id; }
        }
    }
    class index//用indexer
    {
        int[] arri2 = new int[10];
        public int this[int index]
        {
    get { return arri2[index];}
    set { arri2[index] = value;}
          
        }
        public int this[string index1]//indexer重载
        {
            get { return arri2[int.Parse(index1)]; }
            set { arri2[int.Parse(index1)] = value; }
        }
    }
}
     索引器的结构和属性相当的类似,但是它可以添加参数,而属性不可以。索引器有返回值类型而属性没有。

另一方面索引器的功能右相当于类数组,但是索引器优于数值的是它的下标可以不为整型,而数组必须为整形。

还有就是索引器可以被重载。

原文地址:https://www.cnblogs.com/jessie/p/1440925.html