預設名稱 `Item`,可用 `[IndexerName("TheItem")]` 屬性指定自訂名稱(編譯器元資料),其他語言(如 VB.NET)呼叫時可見此名稱。
class TempRecord
{
private float[] _temps = { 56.2f, 56.7f, 56.5f, 56.9f, 58.8f,
61.3f, 65.9f, 62.1f, 59.2f, 57.5f };
public DateTime Date { get; set; } // 自動實作屬性
public int Length => _temps.Length; // 唯讀屬性供邊界檢查
[IndexerName("TheItem")]
public float this[int index]
{
get => _temps[index];
set => _temps[index] = value;
}
}
class MainClass
{
static void Main()
{
var tr = new TempRecord();
tr[3] = 58.3f; // set 存取器
tr[5] = 60.1f;
for (int i = 0; i < 10; i++)
{
if (i < tr.Length)
Console.WriteLine($"Element #{i} = {tr[i]}"); // get 存取器
else
Console.WriteLine($"Index {i} out of range");
}
// 取消註解測試例外
// try { Console.WriteLine(tr[tr.Length]); }
// catch (ArgumentOutOfRangeException ex) { Console.WriteLine(ex); }
}
}