C#學習之索引器

來源:互聯網
上載者:User

索引器是c#中提供允許像訪問數組一樣訪問類或結構的執行個體的一種方式。索引器類似於屬性,不同之處在於他的訪問器採用參數,並用this關鍵字來定義。

1. 索引器的定義文法:

       private T[] arr = new T[100];        public T this[int i]        {            get            {                return arr[i];            }            set            {                arr[i] = value;            }        }

 

  1) 存取修飾詞,此處是public,索引器的類型和參數類型必須至少如同索引器本身一樣是可訪問的;

  2)類型T,根據定義的執行個體類型;

  3)關鍵字this,如果要為索引器提供一個別的語言可以使用的名字,可以使用name特性:此索引器重新命名為ReNamed,不提供名稱特性將產生Item預設名稱;

        [System.Runtime.CompilerServices.IndexerName("ReNamed")]        public int this[int index]        {        }

  4)get,set訪問器方法,以及所以index. index類型可以不是int類型,像string;

 

2. 介面中的索引器
  1)與類索引器不同,介面中的索引器不能使用修飾符,訪問器沒有體,表示索引器是讀寫,唯讀還是唯寫;

  2)當類使用同一索引器簽名實現一個以上的介面時,為避免多義性,需要使用完全限定名,即用介面名.this[int index], 如:

interface test1{    int this[int index]    {        get;        set;    }}interface test2{    int this[int index]    {        get;        set;    }}class Program{    int[] arr=new int[100];    public int test1.this[int index]    {        get        {            return arr[index];        }        set        {            arr[index] = value;        }    }}

3. 屬性和索引器的區別:

屬性

索引器

允許像調用公用資料成員一樣調用方法,

允許對一個對象本身使用數組標記法來訪問該對象內部集合中的元素。

可以為靜態成員或執行個體成員。

必須為執行個體成員。

屬性的 get訪問器沒有參數,屬性的 set訪問器包含隱式 value 參數

索引器的 get, set 訪問器具有與索引器相同的形參表。

支援對自動實作屬性使用短文法。

不支援短文法。

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.