Named Parameters คืออะไร?
อนุญาตให้ระบุ Argument ด้วย ชื่อ Parameter** แทนที่จะต้องเรียงตามลำดับ**
- เพิ่ม Readability ของโค้ด
- สลับลำดับ Argument ได้
- ชื่อ Parameter ต้องตรงกับ Definition
Syntax
MethodName(parameterName: value);
ตัวอย่างโค้ด
using System;
namespace DemoApplication
{
class Demo
{
static void Main(string[] args)
{
// เรียงตามปกติ
NamedParameterFunction("James", "Bond");
// ใช้ Named Parameters
NamedParameterFunction(firstName: "Mark", lastName: "Wood");
// สลับลำดับได้!
NamedParameterFunction(lastName: "Federer", firstName: "Roger");
// ผสมได้: Positional ก่อน Named ต่อ (C# 7.2+)
NamedParameterFunction("John", lastName: "Doe");
Console.ReadLine();
}
public static void NamedParameterFunction(string firstName, string lastName)
{
Console.WriteLine($"FullName: {firstName} {lastName}");
}
}
}
Output
FullName: James Bond FullName: Mark Wood FullName: Roger Federer FullName: John Doe
ข้อจำกัดและกฎ
- Positional Arguments ต้องอยู่ก่อน Named Arguments (C# 7.2+ ผ่อนผ่อนบ้าง)
- ไม่สามารถใช้ Named Parameter กับ
paramsarray ได้ - Parameter Name ต้องตรงกับ Method Signature
- Optional Parameters ใช้ร่วมกับ Named Parameters ได้ดีมาก
กรณีใช้งานจริง (Use Cases)
1. Method ที่มี Parameter เยอะ
// ไม่ชัดเจนว่า true/false คืออะไร
CreateUser("John", "john@email.com", true, false, true);
// ชัดเจนมาก
CreateUser(
name: "John",
email: "john@email.com",
isActive: true,
sendWelcomeEmail: false,
isAdmin: true
);
2. Optional Parameters
void SendEmail(string to, string subject, string body = "", bool isHtml = false, int priority = 1);
// เรียกแค่บาง Parameter
SendEmail(to: "a@b.com", subject: "Hello", isHtml: true);