C#インデックスの使い方

6950 ワード

(1)クラスのメンバー変数が集合タイプである場合、インデックスを使用します(インデックスをstaticと宣言するのは構文エラーです).
       [アクセス修飾子]データ型(集合内の要素と一致)this[データ型識別子]
       {
            get{}; set{};
       }
(2)例:
       class Class1    
       {        
              public string[]stringList={"フフホト"、"長沙"、"南京"}; //メンバー変数は集合タイプです       
              public int[] zhi = new int[3];        
              public string this[int index]        
              {            
                  get { return stringList[index];}            
                  set { stringList[index] = value.ToString(); }        
               }    
       }  
       class Program    
      {        
             static void Main(string[] args)        
            {            
                  Class1 a = new Class1();            
                  Console.WriteLine(a[0]);            
                  Console.WriteLine(a[1]);            
                  a.stringList[0]=「西安」 //付与時のオブジェクト.属性の形式は,属性にインデックスがあるにすぎない.          
                  a[1]=「洛陽」;  //第2の代入方式     
                  Console.WriteLine(a[0]);            
                  Console.WriteLine(a[1]);        
           }    
    }
 実行結果:フフホト
               長沙
               西安          
               洛陽
(3)属性はフィールドのセキュリティを保護し,インデックスはフィールドセットのセキュリティを保護し,フィールドセットは属性で保護できない.
(4)属性のアクセスは直接属性名で行い,インデックスのアクセスはオブジェクト名[インデックス]でアクセスセット内の要素である.
  (5)2つのセットでインデックスを作成する場合は、インデックスのパラメータが異なることを確認しますが、強制的なタイプ変換が必要です.
 1  public  class zhong
2 {
3 private int[] a=new int[10]{1,2,3,3,4,5,6,7,8,8};
4 private string[] s = new string[6]{"qwe","asd","dfg","tyu","io","hjk"};
5 private int i;
6
7 public int I
8 {
9 get { return i; }
10 set { i = value; }
11 }
12 private int j;
13 public int this[int index]
14 {
15 get { return a[index]; }
16 set { a[index] = value; }
17 }
18 public string this[string ind]
19 {
20 get { return s[int.Parse(ind)]; }
21 set { s[int.Parse(ind)] = value; }
22 }
23 }
24 class Program
25 {
26 static void Main(string[] args)
27 {
28 zhong z = new zhong();
29
30 Console.WriteLine(z[0]);
31 Console.WriteLine(z[1]);
32 Console.WriteLine(z["1"]);
33 Console.WriteLine(z["2"]);
34 }