このコードは無効です:
private void Foo(string optionalString = string.Empty)
{
// do foo.
}
しかし、このコードは次のとおりです。
private void Foo(string optionalString = "")
{
// do foo.
}
なんで?string.Empty は定数ではなく読み取り専用フィールドであり、オプションのパラメーターのデフォルトはコンパイル時の定数でなければならないためです。
それで、私の質問に...(まあ、懸念)
これは私がしなければならなかったことです:
private const string emptyString = "";
private void Foo(string optionalString = emptyString)
{
// do foo.
if (!string.IsNullOrEmpty(optionalString))
// etc
}
オプションの文字列パラメータをどのように処理しますか?
String.Emptyをコンパイル時の定数にできないのはなぜですか?