2011-09-15 117 views
2

我經歷別人的代碼,我看到這樣的說法:關於基本的C#類的問題了「this」關鍵字

public CustomClassName this [ string varName] 

請原諒這個問題的newbness,但方括號把我摔下。 這是一個方法或構造函數嗎?

在這種情況下,「this」變量是如何工作的?

回答

6

它被稱爲索引器。 MSDN page.

+0

http://msdn.microsoft.com/en-us/library/2549tw02%28v=VS.100%29.aspx – luksan

+0

所以就是這樣做! VB.NET的'Default'更清晰:) – Ryan

+0

@minitech:非常值得商榷。我還沒有遇到過一個VB中的構造,我認爲它比C#寓言更清晰。 –

0

它是一個索引器,因此您可以訪問類似於數組的類。

0

它正在爲您的類型定義一個索引運算符。舉例來說,List<T>類。庫設計人員希望您能夠編寫如下代碼:

List<int> list = new List<int> { 1, 2, 3, 4, 5 }; 
int x = list[2]; // x == 3 

完成此操作的語法就是您在上面發佈的語法。所以,對於你自己的類型,你可以...

class NameCollection : /* whatever */ 
{ 
    private List<string> _names = new List<string> { "Ed", "Sally", "John" }; 

    public string this[int index] 
    { 
     get { return _names[index]; } 
    } 
} 
0

都不是,它是一個Indexer。它允許您執行CustomClassName [obj]並從對象中檢索值。