1. ホーム
  2. c#

[解決済み】文字列型のデフォルト値が空文字列ではなくnullなのはなぜですか?

2022-04-06 05:49:13

質問

の文字列をすべてテストするのは、かなり面倒です。 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 )