[解決済み] オプションのパラメーターのデフォルト値としてString.Emptyを使用できません。
質問
読書中 効果的なC#の使い方 を読んでいます。で 項目 14 - 重複する初期化ロジックを最小化する で、彼はコンストラクタで新しいオプションのパラメータ機能を使用する次の例を示しています。
public MyClass(int initialCount = 0, string name = "")
を使用していることに注意してください。
""
の代わりに
string.Empty
.
とコメントしています。
上の例で] 2 番目のコンストラクタでは、デフォルト値として 名前 パラメータに、より慣習的な
string.Empty
. それはstring.Empty
はコンパイル時の定数ではありません。これは文字列クラスで定義された静的プロパティです。コンパイル時定数ではないので、パラメータのデフォルト値として使用することはできません。
が使えないのであれば
string.Empty
を使用できないのであれば、その目的は達成されないのではないでしょうか?私は、システムに依存しない空の文字列を参照する手段があることを確認するために、それを使用するのだと思っていました。私の理解は間違っているのでしょうか?ありがとうございます。
UPDATE
ちょっとフォローのコメントです。MSDNによると。
各オプションパラメータは、その定義の一部としてデフォルト値を持ちます。そのパラメータに対して引数が送られない場合、デフォルト値が使用されます。 デフォルト値は定数でなければなりません。
では
System.Environment.NewLine
も使えないし、新しくインスタンス化されたオブジェクトをデフォルト値として使用することもできません。私はまだ VS2010 を使用していないので、これは残念です。
どのように解決するのですか?
C# 2.0コンパイラの時点では、この問題を解決するために
String.Empty
への参照をインライン化することができるので、多くの場合、それは悲観的なものです。
""
をインライン化することはできますが
String.Empty
.
C# 1.1では、すべて空の文字列を含む独立したオブジェクトをたくさん作るのを避けるのに便利でしたが、そのような時代は過ぎ去りました。
""
はうまく機能します。
関連
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み] C#では、文字列の初期化にはstring.EmptyとString.Emptyと""のどちらを使えばいいのでしょうか?
-
[解決済み] C#でオプションのパラメータを使用するにはどうすればよいですか?
-
[解決済み] C#4 インターフェースで定義されたオプションパラメータは、なぜ実装クラスで強制されないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み】String.Emptyと""(空文字列)の違いは何ですか?)
-
[解決済み】なぜString.Emptyは定数でないのですか?