ID非公開

2022/6/30 19:55

22回答

C#などの言語で値が入っていない場合nullとなるようですが、nullの方が良い場合があるのでしょうか?

補足

また、初期値としてnullを代入するのは余り良くないのでしょうか? あえて入れないようにしてnullの場合は例外を発生させる方が良いでしょうか? C#では余り無かったかもしれませんが、Javaではとりあえずnullを初期値として代入してコンパイルできないエラーを回避してしまうような記憶があるのですが正しいのでしょうか?

プログラミング | アプリ開発103閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0
ID非公開

質問者2022/6/30 20:22

例えば、stringのLengthプロパティで文字数の比較時に想定せず初期化されていない場合などでNullReferenceExceptionなどが出る場合です。 このような例外が出ないためにはnullかどうかを比較するという事ですか? そうであるならあえて初期値がnullでなくても良いと思いましたが言語の都合と言えば都合ですが。 そういった意味でも、あえてnullである必要はあるのかとも思いました。 確かに他のクラスなどのオブジェクト型であるなら何を初期値とすればよいかというのはあるのですが、stringなどの場合では何故あえてnullの方が良いのでしょうか? と、思った次第です。

ThanksImg質問者からのお礼コメント

いろいろ勉強になりました。 nullは基本的にはデータ(データベース)としては扱わない。 よって、プログラム上でもstringはnullでは扱わない。 stringは初期化をして例外を発生させない。 他のオブジェクトの場合は何を初期値とすればよいか分からないのでnullであって良い。 stringの初期値がnullであることは仕様なのでしょうがない。 この度は有難うございました。

お礼日時:6/30 21:57

その他の回答(1件)

1

intとかcharとかは値型なので null を入れようとするなら Nullable、つまり ? が必要ですが、stringは参照型なので ? がなくてもnullを入れられますし、 string hoge = null; クラスや構造体のメンバーにしたときの初期値もnullです。 public class Foo { public int hoge; // こちらは int の初期値(ゼロ) public string piyo = string.Empty; // としておかないと null になる } ※ T? は Nullable<T> の短縮形

1人がナイス!しています

ID非公開

質問者2022/6/30 20:51

その初期化時にstring.Emptyが入っていれば初期化は必要ないと思うのでその方が良いと思うのですが、なぜnullなのでしょうか? 必ず初期化すれば良いですが、意図せずnullが入っていた場合があるのでnullの可能性があるものはnullかどうかを必ず比較してチェックが必要という事でしょうか?