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

C# 方法宣告語法詳解:修飾詞、回傳值、參數列表與方法本體規範

     編輯:關於C#

方法宣告完整語法結構


[attributes] [method-modifiers] return-type member-name (formal-parameter-list)
{
    // method-body: 陳述式區塊
}

必要與可選元素

元素必要性說明
attributes可選如 [Obsolete], [MethodImpl]
method-modifiers可選存取修飾詞 + static/virtual/override/abstract 等
return-type必要任何合法型別,無回傳用 void
member-name必要方法名稱,同類別內不可與其他方法/成員同名 (多載除外)
formal-parameter-list可選無參數寫 ()
method-body視修飾詞而定abstract/extern 只有分號;其他需區塊

回傳值機制

  • return 運算式;:回傳值並離開方法。
  • return;:僅用於 void 方法提前離開。
  • 非 void 方法所有路徑必須回傳值,否則編譯錯誤 CS0161。
  • C# 7.0+ 支援 ref return 回傳參考。

public int Max(int x, int y) {
    if (x > y) return x;
    return y; // 確保所有路徑回傳
}

方法修飾詞完整對照 (含現代擴充)

修飾詞說明互斥組
new隱藏基類別同名成員—
public/protected/internal/private存取層級單一
static類別層級,無 thisA
virtual可被 overrideA
override覆寫基類別 virtual/abstractA
abstract無本體,強制實作A
sealed禁止進一步 override需配合 override
extern外部實作 (P/Invoke)—
async非同步方法—
unsafe允許指標/非安全代碼—
partial部分方法 (僅宣告/實作分離)—

互斥組 A:static/virtual/override/abstract 任兩兩互斥。

參數列表詳細語法


[attributes] [parameter-modifiers] type identifier [= default-value]
parameter-modifiers: ref / out / in / params

參數修飾詞規則

  • ref、out、in 互斥,不可共用。
  • params 僅能出現在最後一個參數,且型別必須為一維陣列。
  • in 參數 (C# 7.2+) 僅讀,防止意外修改,適合大型 readonly struct。

方法命名慣例與限制

  • PascalCase:CalculateTotal, GetUserById。
  • 布林回傳方法加前綴:IsValid, HasPermission, CanExecute。
  • 非同步方法加 Async 後綴:DownloadAsync。
  • 同類別內不可與欄位/屬性/事件同名 (多載除外),否則編譯錯誤 CS0102。

部分方法


partial class Generator {
    // 宣告 (可無本體)
    partial void OnGenerated(string code);
    // 實作 (可在另一個 partial 檔案)
    partial void OnGenerated(string code) => Console.WriteLine(code);
}
  • 必須在 partial 類別/結構體中。
  • 隱含 private,不可有存取修飾詞。
  • 回傳型別必須 void,不可有 out 參數 (可有 ref/in)。
  • 若無實作,編譯器會移除呼叫點代碼 (零開銷)。

常見編譯錯誤對照

錯誤碼原因修正
CS0161非 void 方法非所有路徑回傳值補全 return 或拋出例外
CS0120靜態方法存取非靜態成員傳遞實例參考或改為非靜態
CS0102類別內重複定義同名成員重命名或使用多載
CS0542建構子名稱不符類別名稱修正名稱
CS1520方法必須有回傳型別加上 void 或具體型別
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved