[Visual C# / WPF] warning CS8602: null 参照の可能性があるものの逆参照です。[Visual C# / WPF]

該当の要素が is not null かちゃんと確認しているか?の警告

// null の可能性があるアクセス ※oJson モデルに Str 要素があるとする
var vStr = oJson.Str; // CS8602 が出る

// 回避するには下記の通りとなる
var vStr;
if (oJson is not null){
  vStr = oJson.Str;
}

ただ Json モデルの場合、階層が深くなると 階層ごとに is not null のチェックが必要となる
if 文が冗長的になってくるが、そこはやむを得ない

// ※別記事のモデル例 / https://extrose.stoicsounds.jp/blog/?p=4345
if ((oJson is not null) && (oJson.Texts is not null)){
    foreach(childTexts oJsonLine in oJson.Texts){
        fListData.Add(oJsonLine);
    }
}

is not null を随時検知する方法がわかりやすいが、
そもそも、その要素自体が is null であった場合に処理を中断させる、としても 後続の警告は解除できる

if (oJson is null){
  return;
}

var vStr = oJson.Str; // CS8602 は解除される

なお この警告は VSCode の Extensions「C#」では正しく検知できないらしく、
dotnet build などコンパイラを通すことで発覚する場合もある
その場合も警告線は引かれない

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Share via
Copy link