Params in C#
เสฏฐนันท์ พจมานวิมล 650710099
Params ในภาษา C# หมายถึง คำสั่งที่ใช้ในการประกาศอาร์กิวเมนต์ในรูปแบบของอาร์เรย์ ซึ่งช่วยให้คุณสามารถส่งค่าหลายค่าผ่านไปยังเมธอด โดยไม่จำเป็นต้องกำหนดจำนวนของอาร์กิวเมนต์ล่วงหน้า คำสั่งนี้จะใช้เมื่อคุณไม่แน่ใจว่าผู้ใช้จะส่งค่าเข้ามากี่ค่า และต้องการความยืดหยุ่นในการรับค่าเหล่านั้น
อย่างเช่น
public void PrintNames(params string[] names)
{
foreach (string name in names)
{
Console.WriteLine(name);
}
}
สิ่งสำคัญเกี่ยวกับ Params Keyword
Params มีประโยชน์เมื่อโปรแกรมเมอร์ไม่มีความรู้ล่วงหน้าเกี่ยวกับจำนวนพารามิเตอร์ที่จะใช้
อนุญาตให้ใช้คำสำคัญ Params ได้เพียงหนึ่งคำ และจะไม่อนุญาตให้มี Params เพิ่มเติมในการประกาศฟังก์ชันหลัง params
ความยาวของ Params จะเป็นศูนย์หากไม่มีการส่งอาร์กิวเมนต์
ข้อดีของ Params
Params
Flexibility
Params
ช่วยให้เมธอดรับอาร์กิวเมนต์ได้ไม่จำกัดจำนวนReadability ทำให้โค้ดกระชับและเข้าใจง่ายขึ้น
Maintenance ลดโค้ดซ้ำและข้อผิดพลาด ทำให้ดูแลโค้ดง่ายขึ้น
ข้อเสียของ Params
Params
Performance
Params
อาจทำให้โปรแกรมช้าลงเล็กน้อยLimited to one array ใช้ได้แค่ array หนึ่งชุดต่อเมธอด
Type restriction ใช้ได้กับ array มิติเดียวเท่านั้น
ในบางครั้ง ในขณะที่ประกาศเมธอด คุณไม่แน่ใจเกี่ยวกับจํานวนอาร์กิวเมนต์ที่ส่งผ่านเป็นพารามิเตอร์ อาร์เรย์พารามิเตอร์ C#
Example
using System;
namespace AccessSpecifiers
{
class Program
{
// User defined function
public void Show(params int[] val) // Params Paramater
{
for (int i=0; i<val.Length; i++)
{
Console.WriteLine(val[i]);
}
}
// Main function, execution entry point of the program
static void Main(string[] args)
{
Program program = new Program(); // Creating Object
program.Show(2,4,6,8,10,12,14); // Passing arguments of variable length
}
}
}
โค้ดนี้เป็นโปรแกรมตัวอย่างในภาษา C# ที่แสดงวิธีการใช้ params
เพื่อรับอาร์กิวเมนต์ที่มีความยาวไม่จำกัดในฟังก์ชัน Show()
ภายใต้ namespace AccessSpecifiers
Example 2
using System;
namespace AccessSpecifiers
{
class Program
{
// User defined function
public void Show(params object[] items) // Params Paramater
{
for (int i = 0; i < items.Length; i++)
{
Console.WriteLine(items[i]);
}
}
// Main function, execution entry point of the program
static void Main(string[] args)
{
Program program = new Program(); // Creating Object
program.Show("Ramakrishnan Ayyer","Ramesh",101, 20.50,"Peter", 'A'); // Passing arguments of variable length
}
}
}
โค้ดนี้เป็นโปรแกรมในภาษา C# ที่ใช้ params
เพื่อรับอาร์กิวเมนต์ที่มีจำนวนและประเภทต่าง ๆ แบบไม่จำกัดในฟังก์ชัน Show()
รับอาร์กิวเมนต์หลายตัวผ่าน params object[] items
ซึ่งทำให้ฟังก์ชันสามารถรับอาร์กิวเมนต์หลายชนิดได้ เช่น string, int, double, char เป็นต้น
เปรียบเทียบการใช้ Params ในภาษา C# กับภาษาต่างๆ
using System;
class Program
{
public void Show(params int[] numbers)
{
foreach (int num in numbers)
{
Console.WriteLine(num);
}
}
static void Main(string[] args)
{
Program program = new Program();
program.Show(1, 2, 3, 4, 5); // ส่งค่าได้หลายตัว
}
}
จากที่เปรียบเทียบ Code กับภาษาต่างๆแล้ว เมื่อรันโค้ดในแต่ละภาษา จะเห็นว่า output ของโปรแกรมในทุกภาษาแสดงตัวเลข 1 ถึง 5 โดยเรียงตามลำดับที่ส่งเข้าไปในฟังก์ชันที่ใช้ ตามลำดับ
C#: ใช้
params
เพื่อรับอาร์กิวเมนต์หลายตัวJava: ใช้
varargs
ซึ่งรับอาร์กิวเมนต์ไม่จำกัดในรูปแบบของ arrayC: ใช้
va_list
,va_start
,va_arg
สำหรับการจัดการอาร์กิวเมนต์หลายตัวPython: ใช้
*args
เพื่อรับอาร์กิวเมนต์ไม่จำกัด
ซึ่งทุกภาษามีแนวทางเฉพาะในการรับจำนวนอาร์กิวเมนต์ที่ไม่จำกัด ที่ช่วยให้ฟังก์ชันหรือเมธอดมีความยืดหยุ่นมากขึ้นในแง่ของจำนวนอินพุตที่รองรับ
Video Presentation
Slide Presentation
Reference
Last updated