2013-02-19 74 views
2

我在MyClass類有這樣的代碼:C#遞歸

public new MyClass this[int index] 
    { 
     get 
     { 
      if (Count > index) 
      { 
       return this[index]; 
      } 
      //...MyActions... 
      return null; 
     } 
    } 

在串...

return this[index] 

...我有遞歸,但我需要使用屬性在基地類。 我不知道它是如何做到的。

實施例:

return base.this[index] 

但我不可能 '覆蓋' 這個方法中,僅設置 '新'。我傷心

這是怎麼回事? 對不起我的英語很糟糕,謝謝

+0

如果你不允許* *'覆蓋'**基類上的索引器,這是因爲它們沒有使索引器變成'虛擬'。他們可能沒有這樣做是有原因的。我認爲用具有相同簽名的'new'索引器('this [int index]')來隱藏索引器是一個危險的想法。這將與具有相同簽名的兩個索引器混淆。在大多數情況下,不要使用'new'修飾符來隱藏基類的標記。 – 2013-02-19 14:11:23

回答

4

您可以使用base關鍵字來訪問包括索引器在內的基類成員。嘗試使用下面的代碼片段來調用基類索引:

return base[index]; 
+0

哦tnanks!我愛你! – user2071747 2013-02-19 11:17:50

2

然後用base根據需要:

return base[index]; 

例如:

public class A { 
    public object this[int index] { get; } 
} 

public class B : A { 
    public object this[int index] { 
    get { return base[index]; } 
    } 
} 
+0

也謝謝你! ) – user2071747 2013-02-19 11:23:12