single.php

C#で[CS8602:null 参照の可能性があるものの逆参照です]と警告が出る場合の対処法

C#で、Null条件演算子を利用した変数を扱う際に、警告メッセージ[null 参照の可能性があるものの逆参照です]が表示される場合の対処法について備忘録的に投稿します。

Null条件演算子を利用した変数の参照

例えば、こんな感じ。変数の後ろに “?”(Null条件演算子) を追加して宣言した場合に、コード内で変数を参照した場合に警告表示がされます。

要するに、コードに到達した際に変数がNULLの場合があると事前に確認してくれています。

詳しい内容に興味のある方は公式ページの「null 許容の警告を解決する」をご覧ください。

例えば、変数を次のように宣言します。

private System.Drawing.Image[]? imageList;

“?”(Null条件演算子) を追加しなくても問題ありませんが、変数がnullの場合を想定しておくことで不用意なエラーを避けることができます。

そのまま変数の値を代入など参照しようとするとコンパイラーが警告を表示してくれます。

公式ページの解説通りに、参照する前に条件分岐を行います。

if (imageList is not null)
{
  mainImage.Image = imageList[0];
}
else
{
  //変数がNULLの場合の処理
}

これで警告表示が無くなります。

まとめ

C#で、Null条件演算子を設定した変数を参照する際に、警告メッセージ「null 参照の可能性があるものの逆参照です」が表示されて、コードに波線が追加されるのは、参照時にNULLで無いことを確認するコードが無いことが原因です。

変数を参照する前にif文などで “is not null” で確認後に変数を参照することでコンパイラーの警告を回避することができます。

警告メッセージ[null 参照の可能性があるものの逆参照です]と表示されて困っている方の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

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