首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# params 關鍵字傳遞陣列參數時的正確呼叫語法

     編輯:程式設計綜合問答

C# params 允許方法接受可變數量參數,本質上是陣列。呼叫時常見錯誤:直接傳遞多個引數卻忘記語法規則,導致「輸入字串格式不正確」或編譯錯誤。

方法定義

public void GetInfo(params int[] numbers) {
    foreach (int n in numbers) Console.WriteLine(n);
}

正確呼叫方式

// 方式一:傳遞多個獨立引數 (編譯器自動包裝成陣列)
GetInfo(1, 2, 3, 4, 5);

// 方式二:傳遞現有陣列變數
int[] arr = { 10, 20, 30 };
GetInfo(arr);

// 方式三:new 陣列內聯
GetInfo(new int[] { 100, 200 });

// 方式四:零引數 (合法,numbers 為空陣列)
GetInfo();

常見錯誤與修正

錯誤代碼問題修正
GetInfo(1, 2, 3) 在字串格式化語境中非 params 問題,而是格式化字串佔位符不匹配檢查 String.Format 佔位符與引數數量
s.GetInfo() 括號內無引數但預期有值需傳遞陣列或引數列表s.GetInfo(new int[]{...}) 或 s.GetInfo(1,2,3)
傳遞 List<int>型別不匹配GetInfo(list.ToArray())

進階提醒

  • params 只能出現在參數列表最後一個位置。
  • 同一方法不可重載僅差別於 params 與陣列參數 (如 void M(int[] a) vs void M(params int[] a)),會造成歧義。
  • 效能:params 每次呼叫都會配置陣列 (除非傳入現有陣列),高頻熱路徑可提供陣列多載避免配置。

核心:呼叫時要么傳「逗號分隔的引數列表」,要么傳「陣列變數」,別混淆兩者語法。

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