Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的默认方法参数#_C#_.net_Optional Parameters - Fatal编程技术网

C# C语言中的默认方法参数#

C# C语言中的默认方法参数#,c#,.net,optional-parameters,C#,.net,Optional Parameters,如何使方法具有参数的默认值?您只需使用默认值声明它们-它们被称为: 这是在C#4.0中引入的(因此您需要使用visual studio 2010)。C#4.0允许您使用: 在以前的版本中,可以使用方法重载。只能在C#4中执行此操作,C#4引入了以下两种方法: 请注意,默认值必须是常量-正常编译时常量(例如文字)或: 值类型的无参数构造函数 default(T)对于某些类型T 还请注意,默认值嵌入在调用方的程序集中(假设省略了相关参数),因此,如果在不重新生成调用代码的情况下更改默认值,仍然会

如何使方法具有参数的默认值?

您只需使用默认值声明它们-它们被称为:

这是在C#4.0中引入的(因此您需要使用visual studio 2010)。

C#4.0允许您使用:

在以前的版本中,可以使用方法重载。

只能在C#4中执行此操作,C#4引入了以下两种方法:

请注意,默认值必须是常量-正常编译时常量(例如文字)或:

  • 值类型的无参数构造函数
  • default(T)
    对于某些类型
    T
还请注意,默认值嵌入在调用方的程序集中(假设省略了相关参数),因此,如果在不重新生成调用代码的情况下更改默认值,仍然会看到旧值


这一点(以及C#4中的其他新功能)将在第二版中介绍。(本例中为第13章。)

一个简单的解决方案是重载该方法:

private void Foo(int length)
{
}

private void Foo()
{
    Foo(20);
}

即使在C#4中,这仍然是一个很好的解决方案。这样做的一个优点是默认值嵌入到程序集中,而不是调用程序中;更多细节请参见乔恩的回答。@Dan:我越来越怀疑“您不能更改默认值”问题的真正危害。。。因为对于大多数代码,我希望整个应用程序都会被重新编译。这是一件值得了解的事情,但我不认为这真的是一个大问题。@Jon,我倾向于同意你的观点,因为我认为在任何情况下,依赖特定的默认值都可能是不好的做法,因为这似乎表明API的性质已经改变。如果是这样的话,客户可能还是需要更改。可能重复到
C#Depth
书籍的链接是错误的。
manning.com
网站返回一个PHP文件,该文件重定向到一个无法加载的网站。@NikolayKostov:Humbug-affliate程序刚才更改了。我在这里包含了一个更简单的链接。
public void ExampleMethod(
    int required, 
    string optionalstr = "default string",
    int optionalint = 10
)
public void Foo(int x = 10)
{
    Console.WriteLine(x);
}

...
Foo(); // Prints 10
private void Foo(int length)
{
}

private void Foo()
{
    Foo(20);
}