索引器允许一个对象通过使用方括号([]
)语法来访问其内部的数据。这使得对象可以像数组一样被操作,从而提供了更自然的接口来访问类中的数据。
定义索引器
索引器定义了对象如何通过方括号操作符来访问其元素。它们通常用于实现自定义的集合或数据结构。索引器可以接受一个或多个参数,并且返回一个值。
-- -------------------- ---- ------- ------ ----- ------- - ------- ----- ----- - --- --------- -- ------- ------ --- -------- ------ - --- - ------ ------------- - --- - ------------ - ------ - - -
在这个例子中,我们创建了一个名为 MyClass
的类,它有一个私有数组 _data
作为存储数据的地方。这个类定义了一个索引器,允许外部代码通过索引器访问和修改 _data
数组中的元素。
使用索引器
索引器可以像数组那样被使用,这使得代码更加直观和易于理解。
var obj = new MyClass(); obj[50] = 100; // 设置索引为50的值为100 int value = obj[50]; // 获取索引为50的值 Console.WriteLine(value); // 输出:100
在这个例子中,我们首先创建了一个 MyClass
类的实例 obj
。然后我们通过索引器设置了索引为50的值,并立即获取并打印了该值。
索引器的参数
索引器可以接受一个或多个参数,这些参数可以是任何类型,但通常会是整型或枚举类型。参数的类型决定了索引器的签名,并影响到索引器的调用方式。
-- -------------------- ---- ------- ------ ----- ---- - ------- -------- ------- - --- ------------ -- ----------- ------ ------ ----------- ------- --- ------ - --- - ------ --------------- - --- - -------------- - ----------- --------- - - - -- --------- --- ---- - --- ------- --------------- -- - -------- --------------- -- - -------- --------------------------------- ---- -- ----------- ----- --------------------------------- ---- -- ----------- -----
在这个例子中,我们定义了一个名为 Book
的类,其中包含一个索引器,它接受两个参数:一个字符串类型的作者名和一个整型的索引。这个索引器用于存储和检索书籍信息。
只读索引器
如果索引器只包含 get
访问器,则它被称为只读索引器。这使得索引器只能用于检索数据,而不能修改数据。
-- -------------------- ---- ------- ------ ----- ------------- - ------- -------- ------------------ ------- ----- - --- ------------------ ---------- -- --------- ------ ------ ----------- ---- - --- - ------ ---------------------- - ---------- - ----- - - -- ------- ------ ---- ---------- ---- ------ ------ - ---------- - ------ - - -- ------- --- ----------- - --- ---------------- ----------------------- ---------- ----------------------- ---------- --------------------------------------- -- --------- --------------------------------------- -- ---------
在这个例子中,我们定义了一个名为 ReadOnlyClass
的类,它有一个只读索引器。这个索引器只能用于从字典中检索数据。为了能够添加数据到字典中,我们提供了一个 Add
方法。
总结
索引器提供了一种自然的方式来访问和操作对象的数据,使得代码看起来更加简洁和直观。通过定义索引器,我们可以让对象的行为类似于数组或集合,这提高了代码的可读性和可维护性。