索引器和ref、out關鍵字
阿新 • • 發佈:2020-10-22
這節講三個小知識:索引器、ref、out。
索引器:
在一個類中,我們可以定義一個索引器,它可以讓我們在外部像訪問陣列元素一樣訪問類的屬性成員。
索引器的定義就像定義屬性一樣,只不過名稱為this,後邊接一箇中括號宣告索引型別,下面看示例程式碼:
class MyIndexer { private int[] a = { 1, 2, 35, 6, 3, 7 }; //定義一個索引器 public int this[int x] { get { return A[x]; } } }
上述程式碼中有一個數組,定義了一個索引器用來訪問陣列中的元素,索引器對類成員的訪問也是通過get 和set ,此處之定義了get,也就是隻讀索引。在主方法中我們可以這樣訪問:
MyIndexer i = new MyIndexer (); //使用索引器訪問資料 Console.WriteLine (i[1]);
索引器的使得在某些情況下對屬性的訪問變得方便,我們也可以根據需求,定義多個索引器,只要簽名不同即可。
ref、out關鍵字:
ref關鍵字用在引數列表中,用於將被ref修飾的引數是引用傳參,也就是說在方法內部修改值會影響到外部的變數。
out關鍵字同樣用在引數列表中,它用於向外傳遞引用,被out關鍵字修飾的引數,會在該方法執行完畢後接收到方法內部對應引數的賦值。
接下來看程式碼演示:
class refout { public voidTestref (ref int rr) { rr = 100; } public void Testout(out int oo) { oo = 20; } } class Program { static void Main (string[] args) { int r = 10; int o = 40; refout ro = new refout (); ro.Testref (ref r); //此時的傳遞是引用,執行完畢後,r的值會變成100ro.Testout (out o); //向外傳遞引用,方法執行完畢後實參o會接收到方法內部最後一次為oo賦的值 Console.WriteLine ($"r={r} o={o}"); } }
執行結果為:
個人公眾號,熱愛分享,知識無價。