第15天c#基礎索引器
阿新 • • 發佈:2020-12-05
索引器
索引器(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運算子必須成對過載