C# - 索引器:初学者指南
你好,有抱负的程序员们!今天,我们将踏上一段激动人心的旅程,探索C#索引器的世界。别担心,如果你是编程新手——我将作为你友好的向导,一步一步地解释所有内容。那么,让我们开始吧!
索引器是什么?
想象你有一个书架。如果你能直接说“给我第3本书”或者“给我标题为'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