跳轉至內容

C# 程式設計/關鍵字/params

來自華夏公益教科書,開放的書籍,開放的世界

關鍵字params用於描述將一組引數傳遞給方法時,引數的數量並不重要,因為它們可能會有所不同。 由於數量並不重要,因此params關鍵字必須是方法簽名中的最後一個變數,以便編譯器可以在處理params之前處理已定義的引數。

以下是一些示例,說明它在哪裡可以工作,以及在哪裡不能工作

// This works
public static void AddToShoppingBasket(decimal total, params string[] items)
{
  // ....
}

// This works
public static void AddToShoppingBasket(decimal total, int totalQuantity, params string[] items)
{
  // ....
}


// THIS DOES NOT WORK                  <-------------------->
public static void AddToShoppingBasket(params string[] items, decimal total, int totalQuantity)
{
  // ....
}

String.Format方法就是一個很好的例子。 String.Format方法允許使用者傳入一個格式化字串以滿足他們的要求,然後傳入許多引數以供插入字串中的值。 以下是一個示例

public static string FormatMyString(string format, params string[] values)
{
     string myFormat = "Date: {0}, Time: {1}, WeekDay: {1}";
     return String.Format(myFormat, DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString(), DateTime.Now.DayOfWeek);
}

// Output will be something like:
//
// Date: 7/8/2007, Time: 13:00, WeekDay: Tuesday;
//

String.Format 方法接受一個字串,並用第 1、第 2 和第 3 個引數替換 {0}、{1}、{2}。 如果params關鍵字不存在,那麼String.Format()將需要無限數量的過載來滿足每種情況。

public string Format(string format, string param1)
{
  // .....
}

public string Format(string format, string param1, string param2)
{
  // .....
}

public string Format(string format, string param1, string param2, string param3)
{
  // .....
}

public string Format(string format, string param1, string param2, string param3, string param4)
{
  // .....
}

public string Format(string format, string param1, string param2, string param3, string param4, string param5)
{
  // .....
}

// To infinitum



C# 關鍵字
abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using var virtual
void volatile while
特殊的 C# 識別符號(上下文關鍵字)
add alias async await dynamic
get global nameof partial remove
set value when where yield
上下文關鍵字(在查詢中使用)
ascending by descending equals from
group in into join let
on orderby select where
華夏公益教科書