8

私はこれをac#プロジェクトで見ました:

public char this[int index]

私は自分自身をC#に​​慣れていないと思います。誰かがそれが何を意味するのかを助けることができますか?

4

3 に答える 3

15

インデクサーです。

インデクサーを使用すると、クラスまたは構造体のインスタンスに配列と同じようにインデックスを付けることができます。インデクサーは、アクセサーがパラメーターを受け取ることを除いて、プロパティに似ています。インデクサーは配列のような構文を提供します。これにより、配列と同じ方法で型にアクセスできます。インデクサーなどのプロパティは、多くの場合、バッキングストアにアクセスします。多くの場合、int型のパラメーターを受け入れ、配列型のバッキングストアにアクセスします。

http://www.dotnetperls.com/indexerから読んでください

string s = "hello";
Console.WriteLine (s[0]); // 'h'
Console.WriteLine (s[3]); // 'l'

インデクサーの実装

インデクサーを作成するには、これと呼ばれるプロパティを定義し、角かっこで引数を指定します。例えば:

class Sentence
{
   string[] words = "The quick brown fox".Split();
   public string this [int wordNum] // indexer
   {
      get { return words [wordNum]; }
      set { words [wordNum] = value; }
   }
}

このインデクサーの使用方法は次のとおりです。

Sentence s = new Sentence();
Console.WriteLine (s[3]); // fox
s[3] = "kangaroo";
Console.WriteLine (s[3]); // kangaroo

タイプは、それぞれが異なるタイプのパラメーターを持つ複数のインデクサーを宣言する場合があります。インデクサーは、複数のパラメーターを取ることもできます。

public string this [int arg1, string arg2]
{
  get  { ... } set { ... }
}

get_Itemインデクサーは、次のように、 andと呼ばれるメソッドに内部的にコンパイルさset_Itemれます。

public string get_Item (int wordNum) {...}
public void set_Item (int wordNum, string value) {...}

コンパイラはItemデフォルトで名前を選択します。実際には、次の属性でインデクサーを装飾することで名前を変更できます。

[System.Runtime.CompilerServices.IndexerName ("Blah")]
于 2013-01-03T11:44:26.750 に答える
7

これはと呼ばれindexerます。

于 2013-01-03T11:43:30.460 に答える
7

これはインデクサーと呼ばれます。詳細については、MSDNをご覧ください。

于 2013-01-03T11:43:47.777 に答える