1. 利用“命名實參”,您將能夠為特定形參指定實參,方法是將實參與該形參的名稱關聯,而不是與形參在形參列表中的位置關聯。
static void Main(string[] args)
{
Console.WriteLine(CalculateBMI(weight: 123, height: 64)); //實參命名
Console.WriteLine();
}
static int CalculateBMI(int weight,int height)
{
return (weight * 703) / (height * height);
}
有了命名實參,您將不再需要記住或查找形參在所調用方法的形參列表中的順序。 可以按形參名稱指定每個實參的形參。
下面的方法調用都可行:
CalculateBMI(height: 64, weight: 123);
命名實參可以放在位置實參後面,如此處所示。
CalculateBMI(123, height: 64);
但是,位置實參不能放在命名實參後面。 下面的語句會導致編譯器錯誤。
//CalculateBMI(weight: 123, 64);
2. 方法、構造函數、索引器或委托的定義可以指定其形參為必需還是可選。 任何調用都必須為所有必需的形參提供實參,但可以為可選的形參省略實參。
static void Main(string[] args)
{
ExampleClass anExample = new ExampleClass();
anExample.ExampleMethod(1, "One", 1);
anExample.ExampleMethod(2, "Two");
anExample.ExampleMethod(3);
ExampleClass anotherExample = new ExampleClass("Provided name");
anotherExample.ExampleMethod(1, "One", 1);
anotherExample.ExampleMethod(2, "Two");
anotherExample.ExampleMethod(3);
anotherExample.ExampleMethod(4, optionalInt: 4);//運用實參命名,可以跳過之前的可選實參
//anotherExample.ExampleMethod(4, 4) 這樣要報錯,不能中間默認跳過某幾個可選實參,要依次給之前出現的可選實參賦值
}
class ExampleClass
{
private string _name;
public ExampleClass (string name="default name") //構造函數的參數為可選實參
{
_name = name;
}
public void ExampleMethod(int reqired, string optionalstr = "default string", int optionalInt = 10) //第一個為必需實參,後兩個為可選實參
{
Console.WriteLine("{0}:{1},{2} and {3}", _name, reqired, optionalstr, optionalInt);
}
}