2

この構文に初めて遭遇しました(WPFを使用していますが、WPF専用かどうかはわかりません)

public string this[string name]
{
   if(this.User == name)
   {
      ...
   }
}

以下のような標準的な方法に比べてこれを使用する利点は何ですか?

public string Validate(string name)
{
   if(this.User == name)
   {
      ...
   }
}

コンパイルpublic string this(string name)してみましたが、うまくいかないのでthisアスペクトがカギです。しかし、この形式は、標準の方法では実現できないことを実現しますか?それはWPFに固有のものですか、それとも言語の実装ですか?

4

4 に答える 4

3

といいIndexerます。

インデクサーを使用すると、配列のようにクラスまたは構造体のインスタンスにインデックスを付けることができます。インデクサーは、アクセサーがパラメーターを取ることを除いて、プロパティに似ています。

インデクサーは、配列のような構文を提供します。配列と同じ方法で型にアクセスできます。インデクサーなどのプロパティは、バッキング ストアにアクセスすることがよくあります。

「奇妙な」C# プロパティ構文を読み取ることができます

于 2013-03-21T12:13:20.617 に答える
2

それはインデクサーです:

インデクサーを使用すると、配列のようにクラスまたは構造体のインスタンスにインデックスを付けることができます。インデクサーは、アクセサーがパラメーターを取ることを除いて、プロパティに似ています。

これらは通常、辞書、リスト、配列などのコレクション型で使用されます。

あなたが与えた特定の例では、方法がより適切であるように見えます。

于 2013-03-21T12:13:10.560 に答える
0

これにより、配列を使用して要素にアクセスする場合と同じようにクラスを使用できます。

書く代わりに元のために

var element = myObject.GetElementAt(index);

あなたが書く

var element = myObject [index];

于 2013-03-21T12:18:06.993 に答える
0

this[] 構文は「インデクサー」です。これは、プライベートに裏打ちされたコレクションを転送するための構文シュガーです。配列のようなクラスを使用できますが、データを返す前にいくつかのロジックをカプセル化します。たとえば、辞書をラップして、例外をスローする代わりに、存在しないキーに対して null を返すことができます。

于 2013-03-21T12:17:02.293 に答える