あるデータベースNULL値を引くではない私は、単純なC#ステートメントがあります「オブジェクトのインスタンスに設定されていないオブジェクト参照」ヌル統合オペレータ "??"外部キー
var code = container.thing.result.decode ?? "Unknown";
スローデータベースの値がnullの場合は例外です。これは、null以外の値で完全に(これまでのところ)動作します。私はより明確であることしようとした三項演算子を持つ行書き直し:
var outcome = container.thing.result.decode == null ? "Unknown" : container.thing.result.decode;
をと私は同じ例外を除いて同じ結果を得る(とReSharperのは非常に簡単??ステートメントに戻って私を案内します)。
私はまた、演算子はnull値の型でのみ動作します。私が扱っているフィールドはnullable型ではなく、nvarchar(100)であり、ルックアップテーブルへの外部キーです。上で述べたように、このステートメントは有効なNULL以外の値で動作します。
アプリケーションのORMもそれが必要として、それはルックアップテーブルにマップするようなコードとDECODEペアを作るために、CODE値を持っています。
しかし、null値を処理する方法を理解できません。
ありがとうございました!
編集:クイックレスポンスありがとう!私は、投稿後わずか数分で私が混乱した場所を見つけ出しました。私は質問を書くことが問題の輪郭を描くのを助けたと思う。私は、ルックアップテーブルを参照する実際のフィールドがnullであるかどうかを確認するためにステートメントを変更しました:これは私が望むように見えます。ありがとうございました!
nullとは何ですか?それは '結果'部分か '事実'部分ですか?この例外はおそらく何か他のもののために発生します( 'decode'ではなく)。 –
はい、ありがとうございます、私はこの質問を投稿してからわずか数分後に同じ結論に達したと思います。私はそれが大好きです。ステートメントを "var outcome = container.thing.code == null"に変更すると、不明な ":container.thing.result.decode;"私は欲しいものを手に入れます。今私にとって意味がある!説明のために – ewomack