Latest web development tutorials

C#のインデクサー(インデクサー)

インデクサ(インデクサ)は 、配列のようなオブジェクトがインデックスを作成できることができます。あなたはクラスのインデクサを定義する場合、クラスの行為は、仮想アレイ(仮想アレイ)と同じようになります。あなたはクラスのインスタンスにアクセスするには、配列アクセス演算子([])を使用することができます。

文法

次元のインデックス付けの構文は次のとおりです。

要素型この[int型のインデックス] 
{
   //アクセサゲット 
   {
      //}指定したインデックスの値を返します

   設定//設定アクセサ 
   {
      //}が指定したインデックスの値を設定します
}

インデクサー(インデクサー)の使用

声明では、インデクサープロパティ(プロパティ)と同様に機能します。 あなたは、インデックス・セットを定義し、アクセサを取得するために使用できることを、プロパティ(プロパティ)のように。 しかし、プロパティが返されたり、特定のデータメンバーを設定し、インデックスのリターンまたは特定の値にオブジェクトのインスタンスを設定されています。 つまり、インスタンス・データをより小さな部分に分割し、インデックスの各部分は、各部分を取得または設定されています。

属性(プロパティ)の定義は、プロパティ名を提供することを含みます。 インデックスは名前で定義されていますが、オブジェクトのインスタンスを指し、このキー、とされていない場合。 次の例は、この概念を示しています。

システムを用いました。
名前空間のIndexerApplication
{
   クラスIndexedNames
   {
      プライベート文字列[]ネームリスト=新しい文字列[サイズ];
      静的なパブリックint型のサイズ= 10;
      公共IndexedNames()
      {
         以下のために(;私はサイズを<; I = 0 int型私は++)
         名前リスト[I] = "NA"。
      }
      パブリック文字列この[int型のインデックス]
      {
         ゲット
         {
            文字列のTMP;

            場合(インデックス> = 0 &&指数<=サイズ-1)
            {
               TMP =名前リスト[インデックス];
            }
            ほかに
            {
               TMP = "";
            }

            リターン(TMP);
         }
         セット
         {
            場合(インデックス> = 0 &&指数<=サイズ-1)
            {
               名前リスト[インデックス] =値;
            }
         }
      }

      静的な無効メイン(文字列[] args)
      {
         IndexedNames名=新しいIndexedNames();
         名前[0] = "ザラ"。
         名前[1] = "リズ"。
         名前[2] = "Nuha"。
         名前[3] = "アシフ"。
         名前[4] = "Davinder"。
         名前[5] = "スニル"。
         名前[6] = "ルービック";
         以下のために(int型私= 0; iはIndexedNames.sizeを<;私は++)
         {
            Console.WriteLineを(名前[i])と、
         }
         Console.ReadKey()。
      }
   }
}

上記のコードはコンパイルされ、実行されると、次の結果を生成します。

ザラ
めし
Nuha
アシフ
Davinder
スニル
ルービック
NANANA

オーバーロードさインデクサ(インデクサー)

インデクサ(インデクサ)が過負荷にすることができます。 時インデクサ宣言はまた、複数のパラメータを備えることができ、各パラメータは、異なるタイプのものであってもよいです。 インデックスは整数でなければなりません必要はありません。 C#がインデクサは、文字列型のような他のタイプであってもよいことができます。

次の例では、オーバーロードインデクサーを示しています。

システムを用いました。
名前空間のIndexerApplication
{
   クラスIndexedNames
   {
      プライベート文字列[]ネームリスト=新しい文字列[サイズ];
      静的なパブリックint型のサイズ= 10;
      公共IndexedNames()
      {
         以下のために(;私はサイズを<; I = 0 int型私は++)
         {
          名前リスト[I] = "NA"。
         }
      }
      パブリック文字列この[int型のインデックス]
      {
         ゲット
         {
            文字列のTMP;

            場合(インデックス> = 0 &&指数<=サイズ-1)
            {
               TMP =名前リスト[インデックス];
            }
            ほかに
            {
               TMP = "";
            }

            リターン(TMP);
         }
         セット
         {
            場合(インデックス> = 0 &&指数<=サイズ-1)
            {
               名前リスト[インデックス] =値;
            }
         }
      }
      公共のintこの[文字列名]
      {
         ゲット
         {
            int型のインデックス= 0;
            しばらく(インデックス<サイズ)
            {
               場合(名前リスト[インデックス] ==名)
               {
                インデックスを返します。
               }
               インデックス++;
            }
            インデックスを返します。
         }

      }

      静的な無効メイン(文字列[] args)
      {
         IndexedNames名=新しいIndexedNames();
         名前[0] = "ザラ"。
         名前[1] = "リズ"。
         名前[2] = "Nuha"。
         名前[3] = "アシフ"。
         名前[4] = "Davinder"。
         名前[5] = "スニル"。
         名前[6] = "ルービック";
         //のintインデクサで最初のパラメータを使用します(int型私= 0; iはIndexedNames.sizeを<;私は++)
         {
            Console.WriteLineを(名前[i])と、
         }
         //文字列パラメータConsole.WriteLineを(名[ "Nuha"])と第二のインデクサを使用します。
         Console.ReadKey()。
      }
   }
}

上記のコードはコンパイルされ、実行されると、次の結果を生成します。

ザラ
めし
Nuha
アシフ
Davinder
スニル
ルービック
NANANA
2