概念
索引器(indexer) 允許類中的物件可以像陣列那樣方便、直觀的被引用。當為類定義乙個索引器時,該類的行為就會像乙個 虛擬陣列(virtual array) 一樣。
索引器可以有引數列表,且只能作用在例項物件上,而不能在類上直接作用。
可以使用陣列訪問運算子([ ])來訪問該類的例項。
索引器的行為的宣告在某種程度上類似於屬性(property)。屬性可使用 get 和 set 訪問器來定義索引器。但是屬性返回或設定的是乙個特定的資料成員,而索引器返回或設定物件例項的乙個特定值。
定義乙個一維陣列的索引器:
element-type this[int index]
// get 訪問器
get// 返回 index 指定的值
// set 訪問器
set// 設定 index 指定的值
例項:using system;
namespace c_pro
public class student
private string name;
private string grade;
public string name
get
set
public string grade
get
set
// 定義索引器
public string this[int index]
getif (index == 0) return name;
else if (index == 1) return grade;
else return null;
setif (index == 0) name = value;
else if (index == 1) grade = value;
static void main(string args)
student s = new student();
s[0] = "jeson";
s[1] = "first-year";
console.writeline(s.name);
console.writeline(s.grade);
console.readkey();
執行後結果:
jeson
first-year
過載索引器
索引器(indexer)可被過載。索引器宣告的時候也可帶有多個引數,且每個引數可以是不同的型別。沒有必要讓索引器必須是整型的。c# 允許索引器可以是其他型別,例如,字串型別。
using system;
namespace c_pro
public class indexednames
private string namelist = ;
// 輸入namelist的index返回對應的值
public string this[int index]
getreturn namelist[index];
setnamelist[index] = value;
// 輸入namelist的值,返回對應的索引
public int this[string name]
getfor (int i=0; i
if (namelist[i] == name) return i;
return -1;
static void main(string args)
indexednames name = new indexednames();
console.writeline(name[1]);
console.writeline(name["a"]);
執行後結果:
b索引器與陣列的區別:
索引器的索引值(index)型別不限定為整數,用來訪問陣列的索引值(index)一定為整數,而索引器的索引值型別可以定義為其他型別。
索引器允許過載, 乙個類不限定為只能定義乙個索引器,只要索引器的函式簽名不同,就可以定義多個索引器,可以過載它的功能。
索引器不是乙個變數,索引器沒有直接定義資料儲存的地方,而陣列有。索引器具有get和set訪問器。
索引器與屬性的區別:
索引器以函式簽名方式 this 來標識,而屬性採用名稱來標識,名稱可以任意。
索引器可以過載,而屬性不能過載。
索引器不能用static 來進行宣告,而屬性可以。索引器永遠屬於例項成員,因此不能宣告為static。
mysql檔案索引器 快速了解c 中的索引器
class person set 屬性宣告可以如下編碼 person p new person p.firstname tom console.writeline p.firstname 屬性宣告倒更像是域宣告,只不過它還宣告了兩個特殊的成員,按照微軟的說法就是所謂的訪問函式 accessor 當某...
C 索引器 索引器的定義
索引器定義類似於屬性,但其功能與屬性並不相同。索引器提供一種特殊的方法編寫get和set訪問器。屬性可以像訪問字段一樣訪問物件的資料,索引器可以使使用者像訪問陣列一樣訪問類成員。定義索引器的語法如下 訪問修飾符 型別名稱 this 型別名稱 引數名 set索引器沒有像屬性和方法那樣的名字,關鍵字th...
C 索引器 索引器的定義
索引器定義類似於屬性,但其功能與屬性並不相同。索引器提供一種特殊的方法編寫get和set訪問器。屬性可以像訪問字段一樣訪問物件的資料,索引器可以使使用者像訪問陣列一樣訪問類成員。定義索引器的語法如下 訪問修飾符 型別名稱 this 型別名稱 引數名 set索引器沒有像屬性和方法那樣的名字,關鍵字th...