zoukankan      html  css  js  c++  java
  • C#索引器用法

    (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] = "洛阳";  //第二种赋值方式     

                      Console.WriteLine(a[0]);            

                      Console.WriteLine(a[1]);        

               }    

        }

     运行结果:呼和浩特

                   长沙

                   西安           

                   洛阳

    (3)属性可以保护字段的安全性,而索引器则是保护字段集合的安全性,字段集合没法用属性保护。

    (4)属性的访问时直接用属性名来进行访问,而索引器的访问是用对象名[索引]进行访问集合中的元素。

      (5)若要是两个集合建立索引器,确保索引器的参数不同,不过需要强制性的类型转化!

     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 }



  • 相关阅读:
    ant design pro梳理
    JSON.stringify()
    数组小细节
    js this细节
    策略模式解决if-else过多
    使用useState的赋值函数异步更新问题
    Hook
    React Api
    Intent
    树的非递归遍历
  • 原文地址:https://www.cnblogs.com/heluo/p/2412516.html
Copyright © 2011-2022 走看看