程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 索引器

C# 索引器

編輯:C#入門知識

索引器類似屬性,不過是針對數組的,索引器的使用示例如下所示:

namespace ConsoleApplication9Indexer
{
    class Class1
    {
        private string[] Strs = new string[100];


        public string this[int i]
        {
            get { return Strs[i]; }
            set { Strs[i] = value; }
        }


        private int[,] Ints = new int[10,10];


        public int this[int i,int j]
        {
            get { return Ints[i,j]; }
            set { Ints[i,j] = value; }
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            Class1 Tc = new Class1();
            Tc[1] = "sjkf";
            Console.WriteLine(Tc[1]);
            Tc[0,0] = 10;
            Console.WriteLine(Tc[0,0]);
        }
    }
}

特點:
<1>用this關鍵字定義索引器
<2>用get,set進行訪問
<3>索引器的訪問索引可以依據自定的規則,而不是必須是整數
<4>索引器可以被重載
<5>索引器可以有多個形參


推理:
<1>參數類型相同的索引器在類中只能存在一個
<2>若有多個不同索引器,必須索引器的參數不同

接口中的索引器
接口索引器不能使用訪問修飾符,不能有函數體;
當類繼承多個接口索引器並且索引器的參數相同的時候,需要顯式的實現接口的索引器,最終索引器的使用也是只能通過接口來調用,不能通過類的對象來直接調用,示例如下:
namespace ConsoleApplication9Indexer
{
    public interface Inter1
    {
        string this[int i]
        {
            get;
            set;
        }
    }


    public interface Inter2
    {
        string this[int j]
        {
            get;
            set;
        }
    }


    public interface Inter3
    {
        string this[int i]
        {
            get;
            set;
        }
    }
    class Class2 : Inter1,Inter2,Inter3
    {
        private string[] names = new string[100];
        private string[] sexs = new string[100];
        private string[] Adds = new string[100];


        string Inter1.this[int i]
        {
            get { return names[i]; }
            set { names[i] = value; }
        }


        string Inter2.this[int j]
        {
            get { return sexs[j]; }
            set { sexs[j] = value; }
        }


        public string this[int i]
        {
            get { return Adds[i]; }
            set { Adds[i] = value; }
        }
    }


	static void Main(string[] args)
        {
            Class2 Ts = new Class2();
            Inter1 Inters1 = (Inter1)Ts;
            Inters1[11] = "whjhd";
            Console.WriteLine(Inters1[11]);
            Inter2 Inters2 = (Inter2)Ts;
            Inters2[67] = "what a fucking day";
            Console.WriteLine(Inters2[67]);
	}
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved