C# 4.0 新特性?


Named and Optional Arguments ( 具名與選用參數 )

1
2
3
4
5
6
// 宣告一個 M 方法,其中第二、第三個參數是包含預設值的選用參數
public void M(int x, int y = 5, int z = 7);
// 宣告方法與呼叫方法與 JavaScript 簡直如出一轍
M(1, 2, 3); // 標準呼叫法
M(1, 2); // 忽略 z 參數,等同於呼叫 M(1, 2, 7) 因為 z 的預設值為 7
M(1); // 忽略 y 與 z 參數,等同於呼叫 M(1, 5, 7)

而 JavaScript 是這樣寫,不過 C# 4.0 是不允許你這樣寫的:

1
M(1, , 3); // C# 4.0 不允許忽略參數傳入

由於 C# 4.0 不允許忽略參數傳入,所以要忽略參數的話,就必須要靠「具名參數」的寫法,這點跟 VB.NET 是一樣的:

1
2
3
M(1, z: 3);    // 想忽略第2的參數,那第三個參數就用具名參數的寫法
M(x: 1, z: 3); // 也可全部都用具名參數的寫法
M(z: 3, x: 1); // 傳入具名參數是不需考慮順序的

節錄至 : http://blog.miniasp.com/post/2009/02/CSharp-40-New-Features-Dynamic-Lookup-and-Named-and-Optional-Arguments.aspx