gv天堂gv无码男同在线,欧美视频你懂的,毛片一级毛片毛片一级一级毛毛片,亚洲黄色视频免费播放,满18岁免费看的尤物视频,日本欧美三级片免费看,亚洲综合伊人影视在线播放

  • 首 頁(yè)
  • 采購(gòu)市場(chǎng)
  • 企業(yè)查詢
  • 營(yíng)銷建站
  • 營(yíng)銷推廣
  • 行業(yè)資訊
  • 發(fā)布信息
  • C#中的索引指示器 怎么回事?

    懸賞分:20|
    知識(shí)庫(kù)標(biāo)簽: 指示器   |列兵
    索引指示器并不難使用。它們的用法跟數(shù)組相同。在一個(gè)類內(nèi)部,你可以按照你的意愿來(lái)管理一組數(shù)據(jù)的集合。這些對(duì)象可以是類成員的有限集合,也可以是另外一個(gè)數(shù)組,或者是一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。不考慮類的內(nèi)部實(shí)現(xiàn),其數(shù)據(jù)可以通過使用索引指示器來(lái)獲得。如下是一個(gè)例子:
    1.清單 11-1. 索引指示器的例子:IntIndexer.cs
    using System;
    ///
    /// A simple indexer example.
    ///
    class IntIndexer
    {
    private string[] myData;
    public IntIndexer(int size)
    {
    myData = new string[size];
    for (int i=0; i < size; i++)
    {
    myData[i] = "empty";
    }
    }
    public string this[int pos]
    {
    get
    {
    return myData[pos];
    }
    set
    {
    myData[pos] = value;
    }
    }
    static void Main(string[] args)
    {
    int size = 10;
    IntIndexer myInd = new IntIndexer(size);
    myInd[9] = "Some Value";
    myInd[3] = "Another Value";
    myInd[5] = "Any Value";
    Console.WriteLine("\nIndexer Output\n");
    for (int i=0; i < size; i++)
    {
    Console.WriteLine("myInd[{0}]: {1}", i, myInd[i]);
    }
    }
    }
    說明
    1.清單 11-1演示了如何實(shí)現(xiàn)一個(gè)索引指示器, IntIndexer類有個(gè)名為myData的字符串?dāng)?shù)組,該數(shù)組是私有成員,因而其外部成員是看不見的。該數(shù)組是在構(gòu)造函數(shù)中進(jìn)行初始化的,該構(gòu)造函數(shù)帶有一個(gè)整型size參數(shù),用來(lái)初始化myData數(shù)組,初始化時(shí) 把單詞"empty"作為每個(gè)數(shù)組元素的值。
    2.IntIndexer類的下一成員是索引指示器(Indexer),由關(guān)鍵字this和方括號(hào)[int pos]標(biāo)識(shí)出來(lái)。該成員帶有一個(gè)位置參數(shù)pos。正如你已經(jīng)猜測(cè)到,Indexer的實(shí)現(xiàn)同屬性一樣。Indexer有g(shù)et 和set訪問操作,就同屬性中的用法一樣。索引指示器(indexer)返回一個(gè)字符串,在定義索引指示器時(shí),string這個(gè)類型名標(biāo)志著其返回類型為字符串類型。
    3.Main()方法完成如下事情:初始化一個(gè)新的IntIndexer對(duì)象,添加一些值,并且打印出結(jié)果。其輸出結(jié)果如下:
    Indexer Output
    myInd[0]: empty
    myInd[1]: empty
    myInd[2]: empty
    myInd[3]: Another Value
    myInd[4]: empty
    myInd[5]: Any Value
    myInd[6]: empty
    myInd[7]: empty
    myInd[8]: empty
    myInd[9]: Some Value
    4.在不少程序語(yǔ)言中,通常都是使用整數(shù)作為下標(biāo)來(lái)訪問作為數(shù)組元素的,但C#的索引指示器不僅能夠做到這一點(diǎn),而且還能夠更進(jìn)一步。 定義索引指示器時(shí),可以帶有多個(gè)參數(shù),每個(gè)參數(shù)的類型可以不同。添加的參數(shù)由逗號(hào)隔開,同方法中的的參數(shù)表一樣。索引指示器的合法的參數(shù)類型包括:整型,枚舉類型和字符串。另外,索引指示器也可以被重載。在清單 11-2中,我們修改了前面的程序,以便用來(lái)重載索引指示器 ,從而可以接受不同類型的參數(shù)。
    2.清單 11-2. 重載的索引指示器: OvrIndexer.cs
    using System;
    ///
    /// Implements overloaded indexers.
    ///
    class OvrIndexer
    {
    private string[] myData;
    private int arrSize;
    public OvrIndexer(int size)
    {
    arrSize = size;
    myData = new string[size];
    for (int i=0; i < size; i++)
    {
    myData[i] = "empty";
    }
    }
    public string this[int pos]
    {
    get
    {
    return myData[pos];
    }
    set
    {
    myData[pos] = value;
    }
    }
    public string this[string data]
    {
    get
    {
    int count = 0;
    for (int i=0; i < arrSize; i++)
    {
    if (myData[i] == data)
    {
    count++;
    }
    }
    return count.ToString();
    }
    set
    {
    for (int i=0; i < arrSize; i++)
    {
    if (myData[i] == data)
    {
    myData[i] = value;
    }
    }
    }
    }
    static void Main(string[] args)
    {
    int size = 10;
    OvrIndexer myInd = new OvrIndexer(size);
    myInd[9] = "Some Value";
    myInd[3] = "Another Value";
    myInd[5] = "Any Value";
    myInd["empty"] = "no value";
    Console.WriteLine("\nIndexer Output\n");
    for (int i=0; i < size; i++)
    {
    Console.WriteLine("myInd[{0}]: {1}", i, myInd[i]);
    }
    Console.WriteLine("\nNumber of \"no value\" entries: {0}", myInd["no value"]);
    }
    }
    說明
    1.清單 11-2 演示了如何重載索引指示器。
    帶有整型參數(shù)pos的第一個(gè)索引指示器同清單11-1中的一樣,但是,該程序中有個(gè)帶有字符串參數(shù)的新的索引指示器。對(duì)于這個(gè)新的索引指示器來(lái)說,其get操作返回的是同參數(shù)值data相匹配的成員的個(gè)數(shù)。 Set操作把數(shù)組中同參數(shù)值匹配的元素值該變?yōu)関alue值。
    2.在清單11-2的Main()方法中,演示了重載的索引指示器,它接受字符串參數(shù)。
    該重載的索引指示器調(diào)用了set操作,通過使用下列命令: myInd["empty"] = "no value"; set操作把"no value"值賦給myInd 類中所有的值為"empty"的成員。 myInd類的每個(gè)成員都已經(jīng)輸出之后,就把最后一個(gè)數(shù)據(jù)輸出到控制臺(tái),該數(shù)據(jù)統(tǒng)計(jì)數(shù)組成員值為"no value"的個(gè)數(shù)。 使用如下命令:myInd["no value"],就可調(diào)用get操作。輸出結(jié)果如下:
    Indexer Output
    myInd[0]: no value
    myInd[1]: no value
    myInd[2]: no value
    myInd[3]: Another Value
    myInd[4]: no value
    myInd[5]: Any Value
    myInd[6]: no value
    myInd[7]: no value
    myInd[8]: no value
    myInd[9]: Some Value
    Number of "no value" entries: 7
    3.在清單 11-2中,兩個(gè)索引指示器共處在同一個(gè)類中, 這是可以的,因?yàn)樗鼈冇胁煌奶卣鳌?br>一個(gè)索引指示器的特征是通過索引指示器參數(shù)表中的參數(shù)個(gè)數(shù)和類型表現(xiàn)出來(lái)的。類能夠辨別出其特征,并調(diào)用相應(yīng)的索引指示器。帶有多個(gè)參數(shù)的索引指示器可以用如下格式來(lái)實(shí)現(xiàn):
    public object this[int param1, ..., int paramN]
    {
    get
    {
    // process and return some class data
    }
    set
    {
    // process and assign some class data
    }
    }
    小結(jié)
    現(xiàn)在你已經(jīng)了解了索引指示器是用來(lái)做什么的,以及其用法。如同數(shù)組的用法一樣,你可以創(chuàng)建索引指示器來(lái)訪問類的成員。本文也提到了索引指示器的重載和多參數(shù)索引指示器。
    為最佳答案評(píng)分?
    100% (1)
    不好 0% (0)
    (目前有 1 個(gè)人評(píng)價(jià))

    其 他 回 答共4條

    1樓

    如果說屬性是訪問類成員變量的話,
    那索引器就是訪問類成員數(shù)組的,給定一個(gè)索引,獲得數(shù)組指定索引的值
    屬性例子:
    class A
    {
    private int var;
    public int Var
    {
    get{return var;}
    set{var=value;}
    }
    }
    索引器:
    class A
    {
    private int[] var;
    public int this[int i]
    {
    get{return var[i];}
    set{var[i]=value;}
    }
    }
    知識(shí)庫(kù)標(biāo)簽: |列兵

    2樓


    索引指示器通俗的說就是,數(shù)組和結(jié)構(gòu)的默認(rèn)排序,默認(rèn)從0開始
    知識(shí)庫(kù)標(biāo)簽: 指示器   |列兵

    3樓


    估計(jì)你太懶,這些知識(shí)很多教程都有得講。
    知識(shí)庫(kù)標(biāo)簽: |列兵

    我來(lái)回答這個(gè)問題

    立即登陸回答獲取會(huì)員積分,提高用戶級(jí)別
    友情鏈接:
    Copyright © 商名網(wǎng) All Rights Reserved.