12

メソッドにパラメータのデフォルト値を持たせるにはどうすればよいですか?

4

4 に答える 4

16

これは、名前付き引数とオプションのパラメーターの両方を導入した C# 4 でのみ実行できます。

public void Foo(int x = 10)
{
    Console.WriteLine(x);
}

...
Foo(); // Prints 10

デフォルト値は定数でなければならないことに注意してください - 通常のコンパイル時の定数 (リテラルなど) または:

  • 値型のパラメーターなしのコンストラクター
  • default(T)ある種のT

また、既定値は呼び出し元のアセンブリに埋め込まれていることに注意してください (関連する引数を省略した場合)。したがって、呼び出し元のコードを再構築せずに既定値を変更しても、古い値が表示されます。

これ (および C# 4 のその他の新機能) は、C# in Depthの第 2 版で説明されています。(この場合は13章)

于 2010-08-14T08:06:25.360 に答える
12

C# 4.0 では、名前付きおよびオプションの引数を使用できます。

public void ExampleMethod(
    int required, 
    string optionalstr = "default string",
    int optionalint = 10
)

以前のバージョンでは、メソッドのオーバーロードを使用してデフォルト パラメーターをシミュレートできました。

于 2010-08-14T08:06:21.360 に答える
8

デフォルト値でそれらを宣言するだけです-それらはオプションのパラメーターと呼ばれます:

 public void myMethod(string param1 = "default", int param2 = 3)
 {
 }

これは C# 4.0 で導入されました (そのため、Visual Studio 2010 を使用する必要があります)。

于 2010-08-14T08:06:00.567 に答える
4

簡単な解決策は、メソッドをオーバーロードすることです。

private void Foo(int length)
{
}

private void Foo()
{
    Foo(20);
}
于 2010-08-14T08:07:01.210 に答える