快速了解c#中的索引器
class?Person?{
private?string?firstname;
public?string?FirstName
?{
get?{return?firstname;}
set?{firstname?=?value;}
}
}
屬性聲明可以如下編碼:?
Person?p?=?new?Person();
p.FirstName?=?"TOM";
Console.WriteLine?(p.FirstName);
屬性聲明倒更像是域聲明,只不過(guò)它還聲明了兩個(gè)特殊的成員,按照微軟的說(shuō)法就是所謂的訪問(wèn)函數(shù)(accessor)。當(dāng)某一表達(dá)式的右邊調(diào)用屬性或者屬性用作其他子程序(或者函數(shù))的參數(shù)時(shí)即會(huì)調(diào)用get訪問(wèn)函數(shù)。反之,當(dāng)表達(dá)式左邊調(diào)用屬性并且通過(guò)隱式傳遞value參數(shù)設(shè)置私有域值的情況下就會(huì)調(diào)用set訪問(wèn)函數(shù)。
?? 索引器(Indexer)是C#引入的一個(gè)新型的類成員,它使得對(duì)象可以像數(shù)組那樣被方便,直觀的引用。索引器非常類似于我們前面講到的屬性,但索引器可以有參數(shù)列表,且只能作用在實(shí)例對(duì)象上,而不能在類上直接作用。下面是個(gè)例子:
???
namespace IndexerExample
{
Class MyPreviousExp
{
?private string[] myCompanies = new string[10];
?//index creation
?public string this[int index]
?{
?
??get
??{
???if(index <0 or index >= 6)
????return "null";?
???else
????return myCompanies[index];
????
??}
??set
??{
???if(!(index <0 or index >= 10))
????myCompanies[index] = value;
??}
?
?}
}
Class myMainClass
{
?public static void Main()
?{
??myPreviousExp indexerObj = new myPreviousExp();
??
??indexerObj[0] = "AMS"
??indexerObj[3] = "HCL"
??indexerObj[5] = "ACC"
??for(int i=0; i<10; i++
??{????
???
???Console.WriteLine(" My Companies{0} : {1} ",i,indexerObj[i]);
??}
???
?}
}
}
可見(jiàn),我們象通過(guò)數(shù)組那樣,訪問(wèn)到了其中的元素,而通過(guò)
myPreviousExp indexerObj = new myPreviousExp();
建立了索引器,再通過(guò)
?indexerObj[0] = "AMS"
??indexerObj[3] = "HCL"
??indexerObj[5] = "ACC"
設(shè)置值
最后輸出為:
myCompanies 0 : AMS
myCompanies 1 :
myCompanies 2 :
myCompanies 3 : HCL
myCompanies 4 :
myCompanies 5 : ACC
myCompanies 6 : null
myCompanies 7 : null
myCompanies 8 : null
myCompanies 9 : null
轉(zhuǎn)載于:https://www.cnblogs.com/jackyrong/archive/2005/09/26/244518.html
總結(jié)
以上是生活随笔為你收集整理的快速了解c#中的索引器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LinkedList专题3
- 下一篇: C#原型模式之深复制实现