1. 程式人生 > 實用技巧 >第15天c#基礎索引器

第15天c#基礎索引器

索引器

索引器(Indexer)是C#引入的一個新型的類成員,它使得類的物件可以像陣列一樣,使用下標訪問,方便直觀。索引器的功能類似於屬性,它具有get和set方法,可以用來控制類中的陣列、集合類成員。

訪問修飾符 class 類名
{
    訪問修飾符 返回值的資料型別 this[索引值的資料型別 識別符號]
    {
        get { 獲得資料的程式碼; }
        set { 設定資料的程式碼; }
    }
}

例項

    class Program
    {
        static void Main(string[] args)
        {
            Person p1 
= new Person(); //賦值 p1[0] = "小玲"; p1[1] = "小一"; p1[2] = "小二"; p1[3] = "小三"; p1[4] = "小四"; p1[5] = "小五"; p1[6] = "小六"; p1[7] = "小七"; //取值 for (int i = 0; i < Person.size; i++) { Console.WriteLine(p1[i]); }
//根據名字取索引值 Console.WriteLine(p1["小七"]); } } class Person { string[] name = new string[size]; static public int size = 10; //size要用static修飾 不然要放name上面 public Person() { for (int i = 0; i < name.Length; i++) { name[i]
= ""; } } //格式:訪問修飾符 型別 this[引數列表] // { // get塊; // set塊; // } public string this[int num] { get { return name[num]; } set { name[num] = value; } } //過載索引器 public int this[string str] { get { int index = 0; while(true) { if(name[index]== str) { return index; } index++; } return index; } } }

結果

1.當索引器賦值時,執行set塊程式碼

2.當通過索引器訪問時,執行get塊程式碼

總結

1.索引器不能用static修飾符進行修飾

2.索引器沒有名字,以this關鍵字來標識

3.索引器允許過載

4.索引器的引數型別不限定,引數個數不限定

過載運算子

定義

1.通過使用operator關鍵字定義靜態成員函式來過載運算子

2.注意:必須用public修飾且必須是類的靜態的方法

    class Program
    {
        static void Main(string[] args)
        {
            Vector v1 = new Vector(10, 10);
            Vector v2 = new Vector(20, 20);
            Vector v3 = v1 + v2;
            Console.WriteLine(v3);
        }
    }

    class Vector
    {
        public int x;
        public int y;

        public Vector(int x, int y)
        {
            this.x = x;
            this.y = y;
        }

        //格式:訪問修飾符 static 返回值型別 operator 運算子(引數列表)
        //      {
        //          return 返回值;
        //      }
        public static Vector operator +(Vector v1, Vector v2)
        {
            Vector v3 = new Vector(v1.x + v2.x, v1.y + v2.y);
            return v3;
        }

        public override string ToString()           //重寫ToString方法輸出引數
        {
            return string.Format("({0},{1})", x, y);
        }

    }

作用

通過過載運算子可以是類或結構體的例項進行相關運算或比較運算

可過載的物件

總結

1.過載的運算子是幾元那麼引數就有幾個

2.對於二元運算子,第一個引數是運算子左邊的值,第二個引數是運算子右邊的值

3.比較運算子要求成對過載,例如過載“==”的話必須過載“!=”

4.比較運算子的返回值必須是bool型別

5.true和false運算子必須成對過載