参照型を返すこの関数があります。現在、この関数には2つのオプションのパラメーターがあり、どちらもDateTime
クラスのインスタンスです。関数は次のようなものです。
public DateTime GetDate(DateTime start = DateTime.MinValue, DateTime end = DateTime.MinValue)
{
// Method body...
}
VSからのエラーは次のとおりです。
'start'のデフォルトのパラメータ値はコンパイル時定数でなければなりません
もちろん、エラーは2番目のパラメーターに適用され、何が起こっているのかを完全に理解しています。
私が本当に望んでいるのは、これを実行する方法があるかどうか、つまり、メソッドにオプションのパラメーターがあるかどうかを知ることです。今、私がやったことはオーバーロードを作成することです。つまり、パラメーターのない関数GetDate()
とその2パラメーターのオーバーロードを作成しました。
これは実際には問題ではありませんが、それを行う方法があるかどうかを知りたいだけです。
回避策の1つは、次のように割り当てることです。
public DateTime GetDate(DateTime? start = null, DateTime? end = null){
start = start ?? DateTime.MinValue;
end = end ?? DateTime.MinValue;
Console.WriteLine ("start: " + start);
Console.WriteLine ("end: " + end);
return DateTime.UtcNow;
}
これは次のように使用できます:
void Main()
{
new Test().GetDate();
new Test().GetDate(start: DateTime.UtcNow);
new Test().GetDate(end: DateTime.UtcNow);
new Test().GetDate(DateTime.UtcNow, DateTime.UtcNow);
}
そして、期待どおりに機能します。
start: 1/01/0001 0:00:00
end: 1/01/0001 0:00:00
start: 8/08/2014 17:30:29
end: 1/01/0001 0:00:00
start: 1/01/0001 0:00:00
end: 8/08/2014 17:30:29
start: 8/08/2014 17:30:29
end: 8/08/2014 17:30:29
start
とend
値を区別するために、名前付きパラメーターに注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加