首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 方法完整教學:定義、參數傳遞、回傳值、遞迴與作用域

     編輯:關於C#

方法基礎結構

方法為可重複使用的程式碼區塊,封裝特定功能。簽章包含:存取修飾詞、回傳型別、方法名稱、參數列表。良好方法設計遵循單一職責、低耦合、高內聚原則。

參數傳遞機制完整對照

關鍵字傳遞方式適用場景注意事項
(無)傳值實值型別、不需修改引數結構體複製成本、參考型別傳址值
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 回傳/區域變數:ref int Find(int[] arr, int val) 高效能修改陣列元素
  • 非同步方法:async Task<T> 非阻塞 I/O

方法定義
參數傳遞
遞迴範例
作用域

本文對應《叩響 C# 之門》第 6 章函數教學內容

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved