[解決済み】文字列型のデフォルト値が空文字列ではなくnullなのはなぜですか?
質問
の文字列をすべてテストするのは、かなり面倒です。
null
のようなメソッドを安全に適用する前に
ToUpper()
,
StartWith()
などなど
のデフォルト値が
string
が空文字列であれば、テストする必要はありませんし、他の値型、たとえば
int
または
double
などがあります。
さらに
Nullable<String>
が意味を持つことになります。
では、C#の設計者はなぜ
null
を文字列のデフォルト値として使用することができるのでしょうか?
注:これは この質問 しかし、それをどうするかということよりも、なぜそうするのかということに重点を置いています。
どのように解決するのですか?
<ブロッククオート文字列型のデフォルト値が空ではなく、nullなのはなぜですか? の文字列を入力します。
なぜなら
string
は
参照型
であり、すべての参照型のデフォルト値は
null
.
の前に、すべての文字列がNULLかどうかテストするのは、かなり面倒です。 ToUpper()、StartWith()などのメソッドを安全に適用することができます。
これは参照型の動作と一致しています。そのインスタンスメンバを呼び出す前に、ヌル参照であることをチェックするようにしなければなりません。
文字列のデフォルト値が空文字列であれば、私は をテストすることができます。 のような値型は、例えばintやdoubleのようなものです。
以外の特定の参照型にデフォルト値を割り当てること。
null
にすると
一貫性がない
.
その他
Nullable<String>
が意味を持つことになります。
Nullable<T>
は、バリュータイプで動作します。注目すべきは
Nullable
は導入されず、オリジナルの
.NETプラットフォーム
そのため、そのルールを変更していたら、多くの壊れたコードがあったことでしょう(
表敬訪問
jcolebrand
)
関連
-
[解決済み】C#で四捨五入する方法
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
-
[解決済み] 文字列が空かどうかを確認する方法は?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み】文字列をパースしてNULL可能なint型にする方法
最新
-
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#で四捨五入する方法
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] 文字列のデフォルトの初期化。NULLかEmptyか?[クローズド]