Params Keyword ใช้เมื่อไม่ทราบจำนวนอาร์กิวเมนต์ล่วงหน้า ทำให้ส่งได้ทั้ง Array และค่าเดี่ยวๆ
Syntax
public int AddElements(params int[] numbers) { }
โค้ดตัวอย่างเต็ม
using System;
namespace Program
{
class ParamArray
{
public int AddElements(params int[] arr)
{
int sum = 0;
foreach (int i in arr)
sum += i;
return sum;
}
}
class Demo
{
static void Main(string[] args)
{
ParamArray app = new ParamArray();
// ส่งค่าเดี่ยวๆ
int sum = app.AddElements(300, 250, 350, 600, 120);
Console.WriteLine("The sum is: {0}", sum); // 1620
// ส่ง Array เข้าไปได้ด้วย
int[] nums = { 1, 2, 3 };
Console.WriteLine(app.AddElements(nums)); // 6
// ส่งไม่ได้เลย (ได้ Empty Array)
Console.WriteLine(app.AddElements()); // 0
Console.ReadKey();
}
}
}
ผลลัพธ์
The sum is: 1620 6 0
กฎของ params
- ต้องเป็นพารามิเตอร์ ตัวสุดท้าย เท่านั้น
- มีได้ เพียงหนึ่ง ต่อเมธอด
- Type ต้องเป็น Single-dimensional Array
- Caller สามารถส่ง: ค่าตัวแปร, Array, หรือ ไม่ส่งเลย
Params กับ IEnumerable (C# 13+ / .NET 9+)
// รองรับ IEnumerable ได้แล้ว (ไม่จำเป็นต้องเป็น Array)
public void Process(params IEnumerable<int> numbers) { }