方法為可重複使用的程式碼區塊,封裝特定功能。簽章包含:存取修飾詞、回傳型別、方法名稱、參數列表。良好方法設計遵循單一職責、低耦合、高內聚原則。
| 關鍵字 | 傳遞方式 | 適用場景 | 注意事項 |
|---|---|---|---|
| (無) | 傳值 | 實值型別、不需修改引數 | 結構體複製成本、參考型別傳址值 |
| ref | 傳址 (雙向) | 需修改引數實值型別、交換變數 | 呼叫前必須初始化 |
| out | 傳址 (單向輸出) | 多重回傳值、TryParse 模式 | 方法內必須指派值 |
| in | 傳址 (唯讀) | 大型結構體避免複製、不可變語意 | C# 7.2+,編譯器防寫入 |
| params | 參數陣列 | 可變數量同型別參數 | 僅能出現在最後一個參數 |
// 基本定義與回傳
public int Add(int a, int b) => a + b;
// ref 交換
public void Swap(ref int x, ref int y) {
int temp = x; x = y; y = temp;
}
// out 多重回傳
public bool TryParseInt(string input, out int result) {
return int.TryParse(input, out result);
}
// in 唯讀大型結構
public readonly struct Vector3 {
public double X, Y, Z;
public double Magnitude(in Vector3 v) => Math.Sqrt(v.X*v.X + v.Y*v.Y + v.Z*v.Z);
}
// params 可變參數
public int Sum(params int[] numbers) => numbers.Sum();
// 遞迴:階乘
public long Factorial(int n) {
if (n <= 1) return 1;
return n * Factorial(n - 1);
}
// 區域函數 (C# 7+)
public int Fibonacci(int n) {
int Fib(int x) => x <= 1 ? x : Fib(x-1) + Fib(x-2);
return Fib(n);
}
=> 簡化單行方法/屬性void M(int x = 10) 預設值編譯期綁定M(y: 5, x: 1) 不依順序傳遞ref int Find(int[] arr, int val) 高效能修改陣列元素async Task<T> 非阻塞 I/O


