1. 程式人生 > 實用技巧 >索引器和ref、out關鍵字

索引器和ref、out關鍵字

這節講三個小知識:索引器、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 void
Testref (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的值會變成100
ro.Testout (out o); //向外傳遞引用,方法執行完畢後實參o會接收到方法內部最後一次為oo賦的值 Console.WriteLine ($"r={r} o={o}"); } }

執行結果為:

個人公眾號,熱愛分享,知識無價。