高級 C# 技術索引器
索引器提供了一種以與數組相同的方式訪問類或結構的方法。例如,我們可能有表示我們公司內某個部門的類。這個類可以包含該部門中所有雇員的名字,而索引器可以允許我們訪問這些名字,如下所示:
myDepartment[0] = "Fred";
myDepartment[1] = "Barney";
等等。在類的定義中,通過定義具有如下簽名的屬性,可以啟用索引器:
public type this [int index]
然後,我們提供 get 和 set 方法作為標准屬性,而當使用索引器時,這些訪問器指定哪些內部成員被引用。
在下面的簡單示例中,我們創建了一個名為 Department 的類,此類使用索引器來訪問該部門的雇員(在內部表示為一個字符串數組):
using System;
public class Department
{
private string name;
private const int MAX_EMPLOYEES = 10;
private string [] employees = new string [MAX_EMPLOYEES];
public Department(string deptName)
{
name = deptName;
}
public string this [int index]
{
get
{
if (index >= 0 && index < MAX_EMPLOYEES)
{
return employees[index];
}
else
{
throw new IndexOutOfRangeException();
//return "Error";
}
}
set
{
if (index >= 0 && index < MAX_EMPLOYEES)
{
employees[index] = value;
}
else
{
throw new IndexOutOfRangeException();
//return "Error";
}
}
}
// Other methods and propertIEs as usual
}
然後,我們可以創建這個類的一個實例,並且對其進行訪問,如下所示:
using System;
public class SalesDept
{
public static void Main(string[] args)
{
Department sales = new Department("Sales");
sales[0] = "Nikki";
sales[1] = "Becky";
Console.WriteLine("The sales team is {0} and {1}", sales[0], sales[1]);
}
}