私はC#プロジェクトでこれを見た:「奇妙な」C#プロパティの構文
public char this[int index]
私はC#に自分自身が新しい考えます。誰もが意味するものを助けることができますか?
私はC#プロジェクトでこれを見た:「奇妙な」C#プロパティの構文
public char this[int index]
私はC#に自分自身が新しい考えます。誰もが意味するものを助けることができますか?
インデクサーです。
インデクサーを使用すると、クラスまたは構造体のインスタンスのインデックスを 配列のようにすることができます。インデクサは、アクセサーが のパラメータを取る以外は、プロパティと似ています。 インデクサーは配列のような構文を提供します。これは、配列と同じ方法で、型にアクセスすることができます。 インデックス作成者などのプロパティは、多くの場合、 バッキングストアにアクセスします。 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
とset_Item
と呼ばれる方法にコンパイルします。コンパイラは、デフォルト実際にできることで名前Item
を選択
public string get_Item (int wordNum) {...}
public void set_Item (int wordNum, string value) {...}
をこれを で変更して、次の属性でインデクサーを飾ります:
[System.Runtime.CompilerServices.IndexerName ("Blah")]
indexer
と呼ばれます。 インデクサと呼ばれています
。それらについてもっと読むat MSDN
「私は自分自身をC++に新しいものと考えていますが、C++で意味のあるものを助けることができます。 – BoltClock
@BoltClock C++の人がC#でこれを見た? – Shark
@ Shark:これも私が思ったことですが、二重取りの後でなければなりません。 – BoltClock