[解決済み] Deep null チェック、もっといい方法はないのか?
2022-07-02 23:39:35
質問
注意
この質問は
は
.?
演算子がC# 6 / Visual Studio 2015で
.
ケーキ.フロスティング.ベリー.ローダーのような深いプロパティがあり、それがヌルであるかどうかをチェックする必要があるので、例外が発生しないことは誰もが経験することです。これを行う方法は、短絡的な if 文を使用することです。
if (cake != null && cake.frosting != null && cake.frosting.berries != null) ...
これは必ずしもエレガントではなく、チェーン全体をチェックし、NULL変数/プロパティに突き当たるかどうかを確認する、おそらくより簡単な方法があるはずです。
何らかの拡張メソッドを使用して可能なのでしょうか、それとも言語機能でしょうか、それとも単に悪い考えなのでしょうか。
どのように解決するのですか?
私たちは、あなたが望むセマンティクスを持つ新しい操作 "?." を言語に追加することを検討しました。(そして、それは現在追加されています。以下を参照してください。) つまり、あなたは次のように言うでしょう。
cake?.frosting?.berries?.loader
というようにすれば、コンパイラがすべての短絡チェックを生成してくれるでしょう。
これは C# 4 のためのバーにはなりませんでした。おそらく、仮想的な将来のバージョンの言語のためのものでしょう。
更新(2014年)。
は
?.
演算子は、現在
予定
を次のRoslynコンパイラのリリースで使う予定です。演算子の正確な構文解析と意味解析については、まだ議論があることに注意してください。
更新(2015年7月)しました。
Visual Studio 2015 がリリースされ、C# コンパイラが同梱されるようになり、このコンパイラがサポートする
null-conditional演算子
?.
と
?[]
.
関連
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] ディープクローンオブジェクト
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] 型チェック:typeof、GetType、is?
-
[解決済み] instanceofを呼び出す前にnullチェックは必要ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] Pythonでnullオブジェクトを参照する
-
[解決済み] カラムの変更:NULLをNOT NULLに変更する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み】Nullableオブジェクトは値を持たなければならない?