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

索引器

編輯:C#入門知識


 索引器的定義-》


[修飾符] 數據類型 this[索引類型 index]
{ 
  get{//獲得屬性的代碼}
  
set{ //設置屬性的代碼}
}

public,protected,private,internal,new,virtual,sealed,override, abstract,extern.

是表示將要存取的數組或集合元素的類型。

表示該索引器使用哪一類型的索引來存取數組或集合元素,可以是整數,可以是字符串;this表示操作本對象的數組或集合成員,可以簡單把它理解成索引器的名字,因此索引器不能具有用戶定義的名稱。

 索引器參數可以不止一個,類型也不限於int,幾乎可以是任意類型

  如果索引器包含get訪問器,則會生成"get_Item” 的方法;

  如果索引器包含set訪問器,則會生成"set_Item”的方法;

  如果為一個類型設計的索引器要是有其他語言的代碼訪問,就可能需要更改索引器的默認Item名稱了。






編譯器就會生成名為get_Nums,set_Nums的方法,而不是默認的了。

使用IndexerName 如果一個類型中包含多個名稱不同的有參屬性,C#無法編譯代碼,因為它的語法不是通過名稱來引用索引器。


索引器與屬性都是類的成員,語法上非常相似。索引器一般用在自定義的集合類中,通過使用索引器來操作集合對象就如同使用數組一樣簡單;而屬性可用於任何自定義類,它增強了類的字段成員的靈活性。

 

                              屬        性                                      索  引  器

 

 允許調用方法,如同公共數據成員

允許調用對象上的方法,如同對象是一個數組

 可通過簡單的名稱進行訪問

 可通過索引器進行訪問

 可以為靜態成員或實例成員

 必須為實例成員

 其get訪問器沒有參數

 其get訪問器具有與索引器相同的形參表

 其set訪問器包含隱式value參數

 除了value參數外,其set訪問器還具有與索引器相同的形參表

 


 


 數組就是用索引方式

int[] values={2,4,5,6};

int i=values[1];

  

  

 class Person
    {
        private string firstName = "一";
        private string secondName = "二";
        public string this[int index, string name]
        {
            get { return index + name; }
        }
        public string this[int index]
        {
            set
            {
                if (index == 0)
                {
                    firstName = value;
                }
                else if (index == 1)
                {
                    secondName = value;
                }
                else
                {
                    throw new Exception("not exist!");
                }
            }
            get
            {
                if (index == 0)
                {
                    return firstName;
                }
                else if (index == 1)
                {
                    return secondName;
                }
                else
                {
                    throw new Exception("not exist!");
                }
            }
        }
    }

 

























































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