簡単なC#ステートメントがあります。
var code = container.thing.result.decode ?? "Unknown";
これにより、「オブジェクトのインスタンスに設定されていないオブジェクト参照」がスローされます。データベース値がnullの場合の例外。これは(これまでのところ)null以外の値で完全に機能します。もっと明確にして、三項演算子で行を書き直してみました。
var outcome = container.thing.result.decode == null ? "Unknown" : container.thing.result.decode;
そして、同じ例外を除いて同じ結果が得られます(そして、ReSharperは私をはるかに単純な??ステートメントに戻します)。
私もそれを読んだ?? 演算子はnull許容型でのみ機能します。私が使用しているフィールドはnull許容型ではなく、nvarchar(100)であり、ルックアップテーブルへの外部キーでもあります。上で述べたように、ステートメントは有効なnull以外の値で機能します。
アプリケーションのORMにはCODE値もあり、CODEとDECODEのペアを作成します。これは、ルックアップテーブルに適切にマップされているように見えます。
しかし、null値を処理する方法がわかりません。
ありがとうございました!
編集:迅速な対応ありがとうございます!投稿してからわずか数分で、どこが混乱しているかがわかりました。質問を書くことは私が問題を描写するのを助けたと思います。ステートメントを変更して、ルックアップテーブルを参照する実際のフィールドがnullかどうかを確認しました。
var outcome = container.thing.database_code_field == null ? "Unknown" : container.thing.result.Decode;
これは私が欲しいもののように見えます。ありがとうございました!