位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C# > 問(wèn)題詳情

C# 索引符

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-07

    索引符(indexer)是一種特殊的屬性,可以把它添加到一個(gè)類中,以提供類似于數(shù)組的訪問(wèn)。實(shí)際上,可通過(guò)索引符提供更復(fù)雜的訪問(wèn),因?yàn)槲覀兛梢杂梅嚼ㄌ?hào)語(yǔ)法來(lái)定義和使用復(fù)雜的參數(shù)類型。它最常見(jiàn)的一個(gè)用法 是對(duì)項(xiàng)實(shí)現(xiàn)簡(jiǎn)單的數(shù)字索引。

    可以在Animal對(duì)象的Animals集合中添加一個(gè)索引符,如下所示:

public class Animals : CollectionBase 

{

    ...

    public Animal this[int animallndex]

    {

        get { return {Animal)List[animalIndex] ; }

        Set { List[animalIndex] = value; }

    this關(guān)鍵字需要與方括號(hào)中的參數(shù)一起使用,除此以外,索引符與其他屬性十分類似。這個(gè)語(yǔ)法是合理的,因?yàn)樵谠L問(wèn)索引符時(shí),將使用對(duì)象名,后跟放在方括號(hào)中的索引參數(shù)(例如MyAnimals[0])。

    這段代碼對(duì)List屬性使用了一個(gè)索引符(即在IList接口上,可以訪問(wèn)CollectkmBase中的ArrayList,ArrayList存儲(chǔ)了項(xiàng)):

    return (Animal)List[animallndex];

    這里需要進(jìn)行顯式數(shù)據(jù)類型轉(zhuǎn)換,因?yàn)镮List.List屬性返回一個(gè)System.Object對(duì)象。注意,我們?yōu)檫@個(gè)索引符定義了一個(gè)類型。使用該索引符訪問(wèn)某項(xiàng)時(shí),就可以得到這個(gè)類型。這種強(qiáng)類型化功能意味著,可以編寫(xiě)下述代碼:

    animalCollection[0].Feed();

而不是:

    ((Animal)animalCollection[0]).Feed();

這是強(qiáng)類型化的定制集合的另一個(gè)方便特性。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部