[解決済み] 文字列のデフォルトの初期化。NULLかEmptyか?[クローズド]
質問
私は、NULL は値がないことを意味し、"" または String.Empty は有効な値であると考えて、常に自分の文字列を NULL に初期化してきました。 最近、String.Emptyをデフォルト値としたり、値がないことを示すコードの例を多く見かけるようになりました。 c# に新しく追加された null 可能な型では、NULL を使用して「値なし」を表現しないことで、文字列を後退させているように思えます。
デフォルトのイニシャライザーとして何を使用しますか、そしてなぜですか。
編集:回答に基づいて、私はさらに考えを進めます。
-
エラー処理を回避する 値が null であってはならないのに、なぜ
NULL
に設定されたのでしょうか? おそらく、あなたのコードベースの残りの部分を通してそれをカバーするよりも、エラーが発生した場所でエラーを識別する方がよいでしょう? -
ヌルチェックの回避 コードでNULLチェックをするのに疲れるなら、NULLチェックを抽象化する方がいいのでは? おそらく文字列メソッドをラップ (または拡張!) して、それらを
NULL
を安全なものにするためにラップする(あるいは拡張する!)とか?もしあなたが常にString.Empty
を使い続けていて、たまたまNULLがシステムに入り込んでしまった場合はどうなるのでしょうか?NULL
のチェックを追加し始めるのですか?
私は、それが怠惰であるという意見に立ち戻らずにはいられません。の代わりに '' を使用した場合、どんな DBA でも 9 つの方法であなたをひっぱたくことでしょう。
null
の代わりに''を使ったら、どんなDBAでも9回バカにするでしょうね。プログラミングにも同じ原則が適用されると思うし、String.Empty
ではなく
NULL
を使うことで、値がないことを表します。
関連する質問
どのように解決するのですか?
empty" と NULL を区別したことに +1 します。 私は "empty" が "valid, but blank" を意味し、 "NULL" が "invalid." を意味すべきであるということに同意します。
ですから、私はあなたの質問にこう答えます。
空 は、例えばユーザーのミドルネームのように、変更してもしなくてもよい有効なデフォルト値が欲しい場合に使用します。
NULL の場合、後続のコードが明示的に値を設定しないとエラーになります。
関連
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み] C#のマルチライン文字列リテラル
-
[解決済み] base64文字列をエンコード、デコードするにはどうしたらいいですか?
-
[解決済み] IList<string> または IEnumerable<string> からカンマ区切りリストを作成する。
-
[解決済み】大文字・小文字を区別しない「Contains(string)
-
[解決済み】文字列の中にある文字列(実際はchar)の出現回数を数えるには?
-
[解決済み] 配列の初期化に関するすべての可能な構文
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み] 2つのリストを結合する
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である
-
[解決済み] C#では、文字列の初期化にはstring.EmptyとString.Emptyと""のどちらを使えばいいのでしょうか?
-
[解決済み】String.Emptyと""(空文字列)の違いは何ですか?)
-
[解決済み】文字列型のデフォルト値が空文字列ではなくnullなのはなぜですか?