如何在方法中添加可选参数?

Iva*_*nov 0 c# methods

是否可以在方法中声明可选参数?

例如,在delphi中,我可以执行以下操作:

procedure Test(p1:integer;p2:integer;p3:integer = 2;p4:integer = 4)
Run Code Online (Sandbox Code Playgroud)

当我调用该函数时,我可以用四个参数或两个参数调用它:

Test(2,3); //p3 = 2,p4 = 4.
Test(2,3,4,5); //p3 = 4,p4 = 5;
Run Code Online (Sandbox Code Playgroud)

这怎么可能在C#中?

Nol*_*rin 5

我担心这在C#1到3中是不可能的.然而,好消息是,因为它是一个非常需要的功能(虽然肯定有些人宁愿不看它),微软终于决定添加它到C#4.

C#4语法如下:

public static void SayHello(string s = "Hello World!")
{
    Console.WriteLine(s);
}
Run Code Online (Sandbox Code Playgroud)

用法:

SayHello(); // Prints "Hello World!"
SayHello("Hello."); // Prints "Hello."
SayHello(s: "Hello."); // Prints "Hello."
Run Code Online (Sandbox Code Playgroud)

(最后一个示例使用命名参数,在这种情况下实际上不是必需的,但是当您有多个可选参数时会有帮助.)

您可以在此博客文章中阅读有关该主题的更多信息.