C#中的索引器重载

先决条件: C#中的索引器

我们可以在C#中重载索引器。我们可以声明带有多个参数的索引器,并且每个参数都具有不同的数据类型。索引必须为整数类型不是强制性的。索引可以是不同的类型,例如字符串。

示例

using System;
using System.Collections;
namespace ConsoleApplication1
{
    
    class Names
    {
        static public int len=10;
        private string []names = new string[len]    ;


        public Names()
        {
            for (int loop = 0; loop < len; loop++)
                names[loop] = "N/A";
        }
        public string this[int ind]
        {
            get
            {
                string str;
                if (ind >= 0 && ind <= len - 1)
                    str = names[ind];
                else
                    str = "...";
                return str;
            }

            set
            {
                if (ind >= 0 && ind <= len - 1)
                    names[ind]=value;
            }
        }

        public int this[string name]
        {
            get
            {
                int ind=0;

                while (ind < len)
                {
                    if (names[ind] == name)
                        return ind;
                    ind++;
                }
                return ind;
            }
        }
    }

    class Program
    {
        static void Main()
        {
            Names names = new Names();

            names[0] = "Duggu";
            names[1] = "Shaurya";
            names[2] = "Akshit";
            names[3] = "Shivika";
            names[4] = "Veer";

            //第一索引器
            for (int loop = 0; loop < Names.len; loop++)
            {
                Console.WriteLine(names[loop]);
            }

            //第二索引器
            Console.WriteLine("Index : "+names["Shaurya"]);

        }
    }
}

输出结果

    Duggu
    Shaurya
    Akshit
    Shivika
    Veer
    N/A
    N/A
    N/A
    N/A
    N/A
    Index : 1