C#ノート12:インデックス


C#ノート12:インデックス
この章の概要:
1:インデックスの概要
2:例
 
1:インデックスの概要
  • インデックスを使用すると、配列と同様の方法でオブジェクトにインデックスを作成できます.
  • getアクセサは値を返します.setアクセサは値を割り当てます.
  • thisキーワードはインデックスを定義するために使用されます.
  • valueキーワードはsetインデックスによって割り当てられた値を定義するために使用されます.
  • インデックスは、整数値に基づいてインデックスする必要はありません.特定の検索メカニズムを定義する方法を決定します.
  • インデクサをリロードすることができる.
  • インデクサには、2 D配列にアクセスしたときなど、複数のパラメータがあります.

  • 2:例
    C#はインデックスタイプを整数に制限しません.たとえば、インデックスに文字列を使用すると便利です.このようなインデックスは、コレクション内の文字列を検索し、対応する値を返すことで実現できます.アクセサがリロードされるため、文字列と整数バージョンが共存します.
    // Using a string as an indexer value
    class DayCollection
    {
        string[] days = { "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat" };
    
        // This method finds the day or returns -1
        private int GetDay(string testDay)
        {
    
            for (int j = 0; j < days.Length; j++)
            {
                if (days[j] == testDay)
                {
                    return j;
                }
            }
    
            throw new System.ArgumentOutOfRangeException(testDay, "testDay must be in the form /"Sun/", /"Mon/", etc");
        }
    
        // The get accessor returns an integer for a given string
        public int this[string day]
        {
            get
            {
                return (GetDay(day));
            }
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            DayCollection week = new DayCollection();
            System.Console.WriteLine(week["Fri"]);
    
            // Raises ArgumentOutOfRangeException
            System.Console.WriteLine(week["Made-up Day"]);
    
            // Keep the console window open in debug mode.
            System.Console.WriteLine("Press any key to exit.");
            System.Console.ReadKey();
        }
    }
    // Output: 5