2012-12-12 1 views

答えて

12

インデクサーのデフォルト名は、自動的にItemです。これは、自分のクラスを含む名前です。 CLRに関しては、インデクサーはパラメータを持つプロパティに過ぎず、含まれるクラスと同じ名前のプロパティやメソッドなどを宣言することはできません。

1つの選択肢は、Itemと呼ばれないようにクラスの名前を変更することです。もう1つは、インデクサーに使用される「プロパティ」の名前を[IndexerNameAttribute]で変更することです。壊れたの

短い例:

名前の変更によって修正され
class Item 
{ 
    public int this[int x] { get { return 0; } } 
} 

:それを説明

using System.Runtime.CompilerServices; 

class Item 
{ 
    [IndexerName("Bob")] 
    public int this[int x] { get { return 0; } } 
} 
+0

class Wibble { public int this[int x] { get { return 0; } } } 

または属性によって。ありがとうございました!私は最初に属性の方法を見てみましょう。 – espvar

+0

このように混乱してしまったので、ありがとう! – Patrick