C#之out修飾符、ref修飾符、params修飾符的簡單介紹
一、out修飾符
1、調用一個帶有輸出參數的方法也需要使用out 修飾符,但是作為輸出變量傳遞的本地變量在將他們作為輸出變量傳遞前不需要賦值(因為調用後會改變或丟失),編譯器允 許你傳遞未分配的數據,原因是在於所調用的方法內部必須包含這種變量的數據分配。
2、一個很有用的用途,就是調用一次方法返回多個返回值
static void Add(out int x, out int y, out int ans)
{
x = 1;
y = 2;
ans = x + y;
}
3、需要註意的是,定義了輸出參數,則必須在退出方法前為這個參數賦一個有效值,否則會導致編譯器錯誤。
二、ref修飾符
這裏就說明out和ref之間的主要區別;
1、如果希望方法可以對在調用者作用域中聲明的不同數據進行操作(通常是改變它的值),就必須使用引用參數。
2、ref引用參數必須在它們被傳遞給方法前初始化,因為是在傳遞一個已存在變量的引用,如果不給它們賦值,就相當於對一個未賦值的本地變量進行操作。
三、params修飾符
params關鍵字可以把可變數量的參數(相同類型)作為單個邏輯參數傳給方法。換言之,創建一個函數CalculateAverage(),它允許調用者傳入任何數量的參數並返回計算後 的平均值。如果我們定義了來接收double[]數據類型的params,調用者只需要傳入以逗號分隔的double列表。.Net運行庫會在後臺自動把這組double包裝成為一個double類型的數組。
static void CalculateAverage(params double[] valus){} //方法
調用類型:double average=CalculateAverage(4.0,3.3,4.2,5.6);//以逗號分隔的double類型的參數列表。
double average=CalculateAverage(data);//data是一個數組,double[] data={4.0,3.3,4.2,5.6}。
CalculateAverage();//空值調用。
C#之out修飾符、ref修飾符、params修飾符的簡單介紹