索引器是一種特殊的類別成員,它能夠讓物件以類似陣列的方式來訪問,使程式看起來更為直觀,更容易編寫。
1、索引器的定義
C#中的類別成員可以是任意類型,包括陣列和集合。當一個類別包含了陣列和集合成員時,索引器將大大簡化對陣列或集合成員的存取操作。
定義索引器的方式與定義屬性有些類似,其一般形式如下:
[修饰符] 数据类型 this[索引类型 index] { get{//获得属性的代码} set{ //设置属性的代码} }
修飾符包括 public,protected,private,internal,new,virtual,sealed,override, abstract,extern.
資料資料是表示將要存取的陣列或集合元素的類型。
索引器類型表示該索引器使用哪一類型的索引來存取陣列或集合元素,可以是整數,可以是字串;this表示操作本物件的陣列或集合成員,可以簡單地將它理解成索引器的名字,因此索引器不能有使用者定義的名稱。 例如:
class Z { //可容纳100个整数的整数集 private long[] arr = new long[100]; //声明索引器 public long this[int index] { get { //检查索引范围 if (index < 0 || index >= 100) { return 0; } else { return arr[index]; } } set { if (!(index < 0 || index >= 100)) { arr[index] = value; } } }
2、索引器的使用
透過索引器可以存取類別的實例的陣列成員,操作方法和陣列相似,一般形式如下:
物件名稱[索引]
其中索引的資料類型必須與索引器的索引類型相同。例如:
Z z=new z(); z[0]=100; z[1]=101; Console.WriteLine(z[0]);
表示先建立一個物件z,再透過索引來引用該物件中的陣列元素。
C#中並不將索引器的型別限制為整數。例如,可以對索引器使用字串。透過搜尋集合內的字串並傳回對應的值,可以實現此類的索引器。由於存取器可以被重載,字串和整數版本可以共存。
example:
class DayCollection { string[] days={"Sun","Mon","Tues","Wed","Thurs","Fri","Sat"}; private int GetDay(string testDay) { int i=0; foreach(string day in days) { if(day==testDay) return i; i++; } return -1; } public int this[string day] { get{return (GetDay(day))} } } static void Main(string[] args) { DayCollection week=new DayCollection(); Console.WriteLine("Fri:{0}",week["Fri"]); Console.WriteLine("ABC:{0}",week["ABC"]); }
結果:Fri:5
ABC:-1
3、介面中的索引器
在介面中也可以宣告索引器,介面索引器與類別索引器的差異有兩個類別索引器:一是介面索引器不使用修飾符;二是介面索引器只包含存取器get或set,沒有實作語句。存取器的用途是指示索引器是可讀寫、唯讀或只寫的,如果是可讀寫的,存取器get或set均不能省略;如果唯讀的,省略set存取器;如果是唯寫的,省略get訪問器。
例如:
public interface IAddress { string this[int index]{get;set;} string Address{get;set;} string Answer(); }
示所聲明的介面IAddress包含3個成員:一個索引器、一個屬性和一個方法,其中,索引器是可讀寫的。
4、索引器與屬性的比較
索引器與屬性都是類別的成員,語法上非常相似。索引器一般用在自訂的集合類別中,透過使用索引器來操作集合物件就如同使用陣列一樣簡單;而屬性可用於任何自訂類,它增強了類別的欄位成員的靈活性。
更多C#中的索引器的簡單理解和用法相關文章請關注PHP中文網!

本文探討了C中的無指針啟用的挑戰。它認為問題本身不是零,而是濫用。 本文詳細介紹了預防退出的最佳實踐,包括提出前檢查,指針pitiberi

本文解釋瞭如何使用printf中的\ n逃脫序列在C中創建新線字符並列出函數。 它詳細介紹了功能並提供了代碼示例,以說明其用於輸出中的線路斷裂。

本文指導初學者選擇C編譯器。 它認為,海灣合作委員會由於其易用性,廣泛的可用性和廣泛的資源,最適合初學者。 但是,它也比較了海灣室,Clang,MSVC和TCC,突出了它們的差異

本文強調了NULL在現代C編程中的持續重要性。 儘管取得了進步,但NULL對於明確的指針管理仍然至關重要,從而通過標記沒有有效的內存地址來防止細分故障。 最好的prac

本文回顧了初學者的在線C編譯器,重點是易用性和調試功能。 在線GDB和REPL。 其他選項,例如Programiz和Compil

本文討論了C IDE中的有效代碼複製。 它強調,複製是IDE功能,而不是編譯器功能,並且詳細提高了效率的策略,包括使用IDE選擇工具,代碼折疊,搜索/替換,Templa

本文比較在線C編程平台,突出了諸如調試工具,IDE功能,標準合規性和內存/執行限制等功能的差異。 它認為“最佳”平台取決於用戶需求

該教程通過在Windows,MacOS和Linux上安裝C編譯器來指導用戶。 它詳細介紹了流行編譯器(Mingw,Visual Studio,Xcode,GCC)的安裝,解釋了環境變量配置,並提供故障排除步驟


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器