Loading article…
オブジェクト指向プログラミングでは、インデクサーを使用すると、特定のクラスまたは構造体のインスタンスを配列のようにインデックス付けできます。[1]これは演算子オーバーロードの一種です。
実装
インデクサーは、のget アクセサーと setアクセサーを通じて実装されます。これらはプロパティに似ていますが、静的ではない点と、インデクサーのアクセサーがパラメータを取る点が異なります。get アクセサーと set アクセサーは、インデクサー宣言のパラメータ リストを使用してメソッドとして呼び出されますが、set アクセサーには暗黙的なパラメータが残っています。
operator[]value
例
以下はクラス内でインデクサーを使用するC#の例です: [2]
クラスFamily { private List <文字列> _familyMembers = new List <文字列> ();
パブリックファミリー(パラメータ文字列[]メンバー) { _familyMembers . AddRange (メンバー); }
public string this [ int index ] { // get アクセサget => _familyMembers [ index ];
// set アクセサ
set => _familyMembers [ index ] = value ; }
public int this [ string val ] { // 値でインデックスを取得(最初に見つかった要素)get => _familyMembers . FindIndex ( m => m == val ); }
パブリックint長さ=> _familyMembers . Count ; }
使用例:
void Main () { var doeFamily = new Family ( "John" , "Jane" ); for ( int i = 0 ; i < doeFamily . Length ; i ++ ) { var member = doeFamily [ i ]; var index = doeFamily [ member ]; // この場合は i と同じですが、値で doeFamily を検索できるインデクサーのオーバーロードを示しています。Console . WriteLine ( $"{member} は、{nameof(doeFamily)} のメンバー番号 {index} です" ); } }
この例では、インデクサーを使用して n 番目の位置の値を取得し、次にその値によって参照されるリスト内の位置を取得します。コードの出力は次のようになります。
JohnはdoeFamilyのメンバー番号0です ジェーンはdoeFamilyの1番のメンバーです
参照
参考文献
- ^ jagadish980 (2008-01-29). 「C# - C# のインデクサーとは」SURESHKUMAR.NET FORUMS。 2009 年 9 月 22 日時点のオリジナルよりアーカイブ。 2011 年8 月 1 日に取得。
{{cite web}}: CS1 maint: numeric names: authors list (link) - ^ 「C# 面接の質問」. .net Funda . 2011 年 8 月 1 日閲覧。
