此索引器將具有名稱 TheItem。不提供名稱屬性將生成Item默認名稱。
示例1
說明
下面的示例說明如何聲明私有數組字段、temps和索引器。使用索引器可 直接訪問實例tempRecord[i]。另一種使用索引器的方法是將數組聲明為public 成員並直接訪問它的成員tempRecord.temps[i]。
請注意,當計算索引器 的訪問時(例如,在Console.Write語句中),將調用get訪問器。因此,如果 get訪問器不存在,將發生編譯時錯誤。
代碼
C#復制代碼
class TempRecord
{
// Array of temperature values
private float[] temps = new float[10] { 56.2F, 56.7F, 56.5F, 56.9F, 58.8F,
61.3F, 65.9F, 62.1F, 59.2F, 57.5F };
// Auto-Implemented Property
System.DateTime date { get; set; }
// To enable clIEnt code to validate input
// when Accessing your indexer.
public int Length
{
get { return temps.Length; }
}
// Indexer declaration.
// Input parameter is validated by clIEnt
// code before being passed to the indexer.
public float this[int index]
{
get
{
return temps[index];
}
set
{
temps[index] = value;
}
}
}
class MainClass
{
static void Main()
{
TempRecord tempRecord = new TempRecord();
// Use the indexer's set Accessor
tempRecord[3] = 58.3F;
tempRecord[5] = 60.1F;
// Use the indexer's get Accessor
for (int i = 0; i < 10; i++)
{
// This example validates the input on the clIEnt side. You may
// choose to validate it in the class that implements the indexer, and throw an
// exception or return an error code in the case of invalid input.
if (i < tempRecord.Length)
{
System.Console.WriteLine("Element #{0} = {1}", i, tempRecord[i]);
}
else
{
System.Console.WriteLine("Index value of {0} is out of range", i);
}
}
//Uncomment this code to see how the .Net Framework handles indexer exceptions
//try
//{
// System.Console.WriteLine("Element #{0} = {1}", tempRecord[tempRecord.Length]);
//}
//catch (System.ArgumentOutOfRangeException e)
//{
// System.Console.WriteLine(e);
//}
}
}