c#參數修飾詞 in、out、ref

 1. in 參數

in 參數用於將參數「以只讀的方式」傳遞給方法,這意味著方法內部無法修改該參數的值。in 參數適合用於大型結構體,因為可以避免不必要的複製操作,提高效率。

public static void ShowValue(in int number)

{

    // number = 20; // 錯誤:無法修改 in 參數

    Console.WriteLine($"Value is {number}");

}


public static void Main()

{

    int value = 10;

    ShowValue(value); // 輸出:Value is 10

}


2. out 參數

out 參數用於從方法中「傳回值」。方法必須在退出前對out 參數賦值,並且呼叫方法時不需要對傳入的變量進行初始化。out 常用於需要返回多個值的情境,例如TryParse方法。

public static void Calculate(int a, int b, out int sum, out int product)

{

    sum = a + b;

    product = a * b;

}


public static void Main()

{

    int resultSum, resultProduct;

    Calculate(3, 4, out resultSum, out resultProduct);

    Console.WriteLine($"Sum: {resultSum}, Product: {resultProduct}"); // 輸出:Sum: 7, Product: 12

}


3. ref 參數

ref 參數用於「以參考方式」傳遞變量,方法內部可以修改該變量的值,且改動會反映在方法外部。與out不同,ref 參數在傳遞前必須先初始化。

public static void DoubleValue(ref int number)

{

    number *= 2;

}


public static void Main()

{

    int value = 5;

    DoubleValue(ref value);

    Console.WriteLine($"Doubled Value: {value}"); // 輸出:Doubled Value: 10

}


  • in: 傳入參數的值,方法內無法修改該值。
  • out: 方法用來回傳值,參數在方法內必須被初始化。
  • ref: 以參考方式傳遞,方法內可修改值並影響到方法外部。

參考資料:
https://ad57475747.medium.com/c-%E9%9B%9C%E8%A8%98-%E5%8F%83%E6%95%B8%E4%BF%AE%E9%A3%BE%E8%A9%9E-in-out-ref-5e4d83816c3a

留言

熱門文章