Bill Wagner による効果的な C#を読んでいます。Item 14 - Minimize Duplicate Initialization Logicでは、コンストラクターで新しいオプションのパラメーター機能を使用する次の例を示しています。
public MyClass(int initialCount = 0, string name = "")
""
彼がの代わりに使用したことに注意してくださいstring.Empty
。
彼は次のようにコメントしています。
[上記の例で] 2 番目のコンストラクターがnameパラメーターの既定値として "" を指定したことに注意してください
string.Empty
。これstring.Empty
は、コンパイル時の定数ではないためです。文字列クラスで定義された静的プロパティです。これはコンパイル定数ではないため、パラメータのデフォルト値には使用できません。
string.Empty
すべての状況で静的を使用できない場合、それはその目的を無効にしませんか? 空の文字列を参照するシステムに依存しない手段があることを確認するために、これを使用すると考えました。私の理解は間違っていますか?ありがとう。
更新
フォローアップのコメントです。MSDNによると:
オプションの各パラメータには、その定義の一部としてデフォルト値があります。そのパラメーターに引数が送信されない場合は、デフォルト値が使用されます。デフォルト値は定数でなければなりません。
System.Environment.NewLine
その後、どちらも使用することも、新しくインスタンス化されたオブジェクトをデフォルト値として使用することもできません。私はまだVS2010を使用していませんが、これは残念です!