允許以 參數名:值 形式傳遞引數,順序不拘:
static void Main()
{
CreateUser(password: "adminpassWord", name: "admin");
}
static void CreateUser(string name, string password)
{
Console.WriteLine("name:{0}, password:{1}", name, password);
}
在定義時指定預設值,呼叫時可省略:
static void Main()
{
CreateUser("admin", "adminpassWord", 50); // score=50, isLocked=false(預設)
}
static void CreateUser(string name, string password, int score = 20, bool isLocked = false)
{
Console.WriteLine("name:{0}, password:{1}, score:{2}, locked:{3}", name, password, score, isLocked);
}
亦可使用 [OptionalAttribute] (自 .NET 1.0 存在),但語法較繁瑣。
彈性指定部分可選參數:
CreateUser("admin", "adminpassWord", isLocked: true); // 僅指定 isLocked,score 採預設 20
方法、建構函式、索引子、委派皆支援命名與可選參數。
搭配 dynamic 類型,可更輕鬆地存取 COM API (如 Office 自動化)、IronPython 物件、HTML DOM 等動態物件。