標籤:
注意:以下大部分內容為網上資料或其他朋友的博客摘錄
本人初學.net,希望前輩們多多指教和交流
索引器(Indexer)是C#引入的一個新型的類成員,它使得類中的對象可以像數組那樣方便、直觀的被引用。 索引器非常類似於屬性,但索引器包含索引參數(放在 [ ] 內),而且索引器是無名稱的(由於 this 被索引,因此在聲明中使用的“名稱”為 this),且只能作用在執行個體對象上,而不能在類上直接作用。定義了索引器的類可以讓您像訪問數組一樣的使用 [ ] 運算子訪問類的成員。
下面給出一個例子:
請看代碼,下面是類的定義,中間包含了一個索引器定義
public class Person
{
//定義兩個欄位資訊
private string name;
private string password;
//定義一個 Name 屬性來操作 name 欄位
public string Name
{
set { name = value; }
get { return name; }
}
//定義一個 Password 屬性來操作 password 欄位
public string Password
{
set { password = value; }
get { return password; }
}
//定義索引器,name 欄位的索引值為 0 ,password 欄位的索引值為 1
public string this[int index]
{
get
{
if (index == 0) return name;
else if (index == 1) return password;
else return null;
}
set
{
if (index == 0) name = value;
else if (index == 1) password = value;
}
}
}
下面是使用索引器的方法:
protected void Page_Load(object sender, EventArgs e)
{
//聲明並執行個體化這個類
Person p = new Person();
//使用索引器的方式來給類的兩個屬性賦值
p[0] = "jarod"; //從這裡可以看出,對象中的欄位就可以像數組那樣輕鬆的訪問了 【這裡是給name和password賦值的】
p[1] = "123456,./";
//使用類屬性取得兩個欄位資訊
Label1.Text = p.Name + " / " + p.Password;
}
到此為止我想大家應該大致有個把握了,那麼還有一些細節需要補充:
(1) 說明使用者是否可以定義索引指標的名稱。
答:不能使用使用者自訂的名稱 就是this【索引表】
(2) 使用索引指標的時候怎麼避免數組越界問題
這個問題希望會的朋友解答一下
(3) 使用索引指標為我們帶來了那些方便
答: 可以不完全封閉欄位(與屬性相似)、像使用數組一樣訪問欄位值或修改
—————————————學而不思則罔,思而不學則殆———————————————————
C#初學之索引器(Indexer)