1.什么是索引器?
? 索引器是c#語言中的一種類成員洋满,它可以讓對象像數(shù)組一樣被索引獲取。
例如:
string obj = "Abc";
Console.WriteLine(obj[0]); //結(jié)果為A
2.一個小Demo說明索引基本用法正罢。
?? 我們需要有這么一個類驻民,該類有一個int類型的數(shù)組成員變量名為arr;我們知道int類型成員變量我們實(shí)例對象需要通過屬性的訪問器get set 來訪問裆泳,那么我們數(shù)組成員變量訪問方式就是該屬性的索引器(其實(shí)本質(zhì)也是get set方法)柠硕。
using System;
class Sample
{
//數(shù)組成員變量
private int[] arr = new int[3];
public Sample()
{
arr[0]=100;
}
//定義數(shù)組成員變量索引,類實(shí)例對象通過索引訪問數(shù)組成員變量闻葵。
public int this[int i]
{
get { return arr[i]; }
set { arr[i] = value; }
}
}
class Program
{
static void Main()
{
var values = new Sample();
values[1] = "200";
Console.WriteLine(values[0]);//結(jié)果為 100
Console.WriteLine(values[1]);//結(jié)果為200
}
}
3.索引器定義
?? 索引器定義方式和屬性訪問器類似
public 類型 this[類型 參數(shù)名稱]
{
get{}//get方法具體實(shí)現(xiàn)
set{} //set方法具體實(shí)現(xiàn)
}
例如:
class 對一個Hashtable類型的類成員設(shè)置索引
{
private Hashtable ht;//字符串索引用到哈希表來存放鍵值對
public MyStringIndex(Hashtable ht)
{
this.ht = ht;
}
public string this[string key]
{
get
{
string name =(string)ht[key];
return name;
}
set
{
ht[key] = value;
}
}
如果大家對于上面代碼存有疑惑笙隙,可以選擇自己熟悉的集合類型來變更理解洪灯,或者了解一下Hashtable(后續(xù)我會編寫說明)签钩。
4.小結(jié)
我們來看一道題目:
C#中索引器是否只能根據(jù)數(shù)字進(jìn)行索引?是否允許多個索引器參數(shù)铅檩?