C#方法參數傳遞機制


1:value(值傳遞)、ref(引用傳遞)、out(輸出傳遞)

ref和out使用效果上面是等效的,它們的區別在於:參數標記為ref,那么必須在調用函數之前初始化參數的值;參數標記為out,調用函數之前不需要初始化對象,但調用的函數必要在函數返回之前為對象賦值

using System;

//value(值傳遞)、ref(引用傳遞)、out(輸出傳遞)
public class Test
{
    public static void ValueFun(int i)
    {
        i++;
    }

    public static void RefFun(ref int j)
    {
        j++;
    }

    public static void OutFun(out int k)
    {
        k = 0;//使用out關鍵字,必須參數初始化
        k++;
    }

    static void Main()
    {
        int i = 0;
        ValueFun(i);//i的值是實參的一個副本,實參i不會改變
        Console.WriteLine(i);

        int j = 0;
        RefFun(ref j);//指向同一塊內存,實參j的值會改變
        Console.WriteLine(j);

        int k;
        OutFun(out k);//和ref關鍵字等效
        Console.WriteLine(k);
    }
}

2:params可變參數

params主要的用處是在給函數傳參數的時候用,就是當函數的參數不固定的時候。

在方法聲明中的 params 關鍵字之后不允許任何其他參數,並且在方法聲明中只允許一個 params 關鍵字。

關於參數數組,需掌握以下幾點:

  (1)若形參表中含一個參數數組,則該參數數組必須位於形參列表的最后

  (2)參數數組必須是一維數組

  (3)不允許將params修飾符與ref和out修飾符組合起來使用

  (4)與參數數組對應的實參可以是同一類型的數組名,也可以是任意多個與該數組的元素屬於同一類型的變量

  (5)若實參是數組則按引用傳遞,若實參是變量或表達式則按值傳遞

  (6)用法:可變的方法參數,也稱數組型參數,適合於方法的參數個數不知的情況,用於傳遞大量的數組集合參數;當使用數組參數時,可通過使用params關鍵字在形參表中指定多種方法參數,並在方法的參數表中指定一個數組,形式為:方法修飾符 返回類型 方法名(params 類型[] 變量名)

using System;

//可變數量參數
//關鍵字params后面必須是一個數組
public class Test
{
    static int addInt(params int[] values)
    {
        int sum = 0;
        foreach (int i in values)
        {
            sum += i;
        }
        return sum;
    }
    static void Main()
    {
        int[] arr = {1,2,3,4,5,6,7,8,9};
        Console.WriteLine(addInt(arr));
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM