ホームページ  >  記事  >  バックエンド開発  >  C#学習日記28---インデクサー、オーバーロードされたインデクサー

C#学習日記28---インデクサー、オーバーロードされたインデクサー

黄舟
黄舟オリジナル
2017-01-21 15:39:391277ブラウズ

インデクサーを使用すると、クラスまたは構造体のインスタンスに配列と同じようにインデックスを付けることができます。クラスのインデクサーを定義すると、クラスは配列アクセサー '[]' を使用してインスタンスにアクセスできます。インデクサーは属性に似ていますが、インデクサーはパラメーターを受け取ります (インデクサーは、アクセサー (特別なメソッド) を通じて実装されるクラスのプロパティであると考えることもできます)。例を挙げてみましょう。大学は人生で最も暇な時期です。学生は、かつてはやりたかったが、さまざまな理由でできなかったことがたくさんあります。クラスがあると、先生は生徒の名前または生徒番号を呼びます。私はクラス 4 です。先生は生徒番号を「クラス 4 の 1 番」と呼んでから、大きな声で「○○へ」と答えるのが好きです。 ."、"4年2組"、"到着"、"3年4組"... "3番。クラスメート。"、"HC666先生は今日腹痛で病院に行きました。" (仲の良い中国人のルームメイト)、「ああ、4番」…先生の点呼は4クラスの指標です。

class4をClassesクラスでインスタンス化されたオブジェクトとみなして、class[1]がクラスメイト1番のインデックス(配列を考えれば分かると思います)だとすると、どうやって実装するのでしょうか?

インデクサーを定義します:

前述したように、インデクサーは属性に似ています。当然、インデクサーもクラスのメンバーであるため、クラス内で定義する必要があります。以下のように:

   public 返回值类型 this[参数类型 参数]  
             {
                                 get { return 参数指定的值;   }    //get访问器
                    set {  /*设置参数指定的值 */    }     //set访问器
            }

インデクサの例:

‐ ‐ ’ s ’ s ’ s ‐ ‐

学生の名前、名前インデックスから学生番号を取得するにはどうすればよいですか?インデックスを特別なメソッドとみなします。このメソッドはオーバーロードを使用して、異なるパラメーターで同じ機能を実現できるため、インデクサーは当然オーバーロードできます。使用法はメソッドのオーバーロードと似ています (メソッドのオーバーロードを表示するには、ここをクリックしてください)。上記の例を続けます。今回は、名前インデックスを使用して学生番号を取得する必要があります:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
  
namespace Test1  
{//定义一个能被索引的类  
    class Classes  
    {//对类的索引实质是对类中数组的索引  
       public string[] StudentName=new string[6];  
        //定义索引器  
       public string this[int ID]  
       {  
           get { return StudentName[ID]; }  
           set { StudentName[ID] = value; } //set访问器自带value参数  
         
       }  
      
    }  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            Classes class4 = new Classes();  
            //索引写入  
            for (int i = 1; i < 6; i++)  
            {  
                class4[i] = "HC"+i;  
            }  
            //索引读出  
            for (int j = 1; j < 6; j++)  
            {  
                Console.WriteLine(j+"号\t"+class4[j]);  
            }  
              
        }  
    }  
}
C#学習日記28---インデクサー、オーバーロードされたインデクサー結果:

上で述べたように、クラスがインデクサーを定義する場合、そのクラスを配列のように扱うことができます。配列について学ぶと、配列には複数の次元があることがわかります。インデクサーが配置されているクラスはどうでしょうか。 ?配列を走査するために使用する foreach 走査ステートメントは、このクラスにも使用できますか? ?次の記事で紹介します! ! (学校が停電しそうなので…) 今後ともHC666をよろしくお願いします^_^

以上、C#学習日記28---インデクサとオーバーロードインデクサの内容でした。 、PHP 中国語 Web サイト (www .php.cn) に注意してください。

C#学習日記28---インデクサー、オーバーロードされたインデクサー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。