C# - 索引器:初學者指南
你好,有志於成為程序員的各位!今天,我們將踏上一段令人興奮的旅程,探索 C# 索引器的世界。別擔心你對編程還是新手——我將成為你的友好導遊,逐步解釋一切。那麼,讓我們一起來看看吧!
究竟何為索引器?
想像一下你有一個書架。比起翻遍每一本書來找尋你想要的書,如果你可以直接說「給我第三本書」或「給我標題為 'C# 初學者' 的書」,豈不是更好?這正是 C# 中索引器的作用——它們提供了一種方便的方式來訪問代表值集合的類中的元素。
索引器的語法
讓我們從索引器的基本語法開始:
public Type this[Type index]
{
get { /* 返回值 */ }
set { /* 設置值 */ }
}
別讓這個語法嚇到你!讓我們分解一下:
-
public
:這意味著索引器可以被類外部訪問。 -
Type
:這是索引器將返回或設置的值類型。 -
this
:這個關鍵字用於定義索引器。 -
[Type index]
:這指定了索引參數的類型和名稱。 -
get
和set
:這些是訪問器方法,用以獲取或設置值。
索引器的使用
現在,讓我們通過一個簡單的例子來看看索引器的實際應用:
public class Bookshelf
{
private string[] books = new string[5];
public string this[int index]
{
get { return books[index]; }
set { books[index] = value; }
}
}
在這個例子中,我們創建了一個 Bookshelf
類,並為其添加了索引器。以下是如何使用它的方法:
Bookshelf myShelf = new Bookshelf();
myShelf[0] = "C# 初學者";
myShelf[1] = "進階 C#";
Console.WriteLine(myShelf[0]); // 輸出:C# 初學者
這不是很棒嗎?我們可以像操作數組一樣訪問和修改書籍,但我們其實是在與一個自定義類進行交互!
為何使用索引器?
你可能會想,「為什麼不直接使用數組?」其實,索引器給我們提供了更多的控制權。我們可以在獲取或設置值時添加驗證、日誌記錄或任何自定義邏輯。例如:
public string this[int index]
{
get
{
if (index < 0 || index >= books.Length)
throw new IndexOutOfRangeException("無效的書籍索引!");
return books[index];
}
set
{
if (index < 0 || index >= books.Length)
throw new IndexOutOfRangeException("無效的書籍索引!");
books[index] = value;
}
}
現在,如果有人試圖訪問一個不存在的書籍,他將會收到一個有用的錯誤信息,而不是讓程序崩潰!
重載索引器
就像方法一樣,索引器也可以被重載。這意味著我們可以有具有不同參數類型的多個索引器。讓我們擴展我們的 Bookshelf
示例:
public class Bookshelf
{
private string[] books = new string[5];
// 帶有 int 參數的索引器
public string this[int index]
{
get { return books[index]; }
set { books[index] = value; }
}
// 帶有 string 參數的索引器
public string this[string title]
{
get
{
return Array.Find(books, book => book == title);
}
set
{
int index = Array.FindIndex(books, book => book == title);
if (index >= 0)
books[index] = value;
}
}
}
現在,我們可以通過索引或書名來訪問書籍:
Bookshelf myShelf = new Bookshelf();
myShelf[0] = "C# 初學者";
myShelf[1] = "進階 C#";
Console.WriteLine(myShelf[0]); // 輸出:C# 初學者
Console.WriteLine(myShelf["進階 C#"]); // 輸出:進階 C#
myShelf["C# 初學者"] = "C# 精通";
Console.WriteLine(myShelf[0]); // 輸出:C# 精通
這不是很強大嗎?現在,我們可以用多種直觀的方式與我們的 Bookshelf
進行交互!
索引器方法表格
這裡是一個我們已經介紹過的索引器方法的快速參考表格:
方法 | 描述 | 示例 |
---|---|---|
get |
獲取指定索引的值 | return books[index]; |
set |
設置指定索引的值 | books[index] = value; |
結論
好了,我們已經探索了 C# 索引器的世界,從基本語法到重載索引器。記住,索引器是強大的工具,可以使你的代碼更加直觀且容易使用。它們就像是魔法咒語,將你的類轉化為易於使用的集合。
在你繼續編程旅程的時候,你會發現 C# 中還有更多令人興奮的功能。但現在,給自己一個掌聲——你剛剛掌握了索引器!持續練習,保持好奇心,並且快樂編程!
Credits: Image by storyset