若想把物件當成陣列來使用,C#1.0開始就有提供Indexer,讓我們在類別中實作索引函式,達到物件當成陣列用的目的
Indexer第一次看到時覺得還蠻有趣的,雖然後來有List跟泛型可以用,不過Indexer也算是一種傳入方式
撰寫方式有點像昨天說的property一樣有set、get和value,如以下:
public class 會員
{
public string 會員ID { get; set; }
public string 名稱 { get; set; }
}
public class 會員名冊
{
private List<會員> 名冊 = new List<會員>();
public 會員 this [int index]
{
get
{
if (index >= 0 && index < 名冊.Count)
{
return 名冊[index];
}
else
{
return null;
}
}
set
{
if (index >= 0 && index < 名冊.Count)
{
名冊[index] = value;
}
if(index == 名冊.Count)
{
名冊.Add(value);
}
}
}
}
索引函式可以多載,除了剛剛寫的this [int index]索引函式,我們還可以在類別中再加入一個傳入值是string的索引函式