JetBrains Rider 2026.1 Help

コードインスペクション:null 許容参照型のアノテーションによると、条件付きアクセス修飾子の式は null ではありません

null 許容参照型 (NRT) が有効になっている場合、このインスペクションは、null 許容コンテキストとアノテーションにより null ではないことが保証されている式に対して、冗長な条件付きアクセス演算子 (?.) を報告します。

次の例では、 GetRnd() は戻り値の型 Rnd? アノテーションなし)で宣言されています。つまり、null 許容を意識したコンテキストでは、戻り値が null になることはありません。 rnd はこの戻り値を受け取るため、非 null と見なされ、 ?. 演算子は rnd?.TrueOrFalse 内で不要になります。 そのため、JetBrains Rider は rnd?.TrueOrFalsernd.TrueOrFalse に置き換えることを提案します。

#nullable enable class Test { Test() { var rnd = GetRnd(); if(rnd?.TrueOrFalse is true) Console.WriteLine("True"); } Rnd GetRnd() => new Rnd(); } public class Rnd { public bool TrueOrFalse => new Random().Next(2) == 0; }
#nullable enable class Test { Test() { var rnd = GetRnd(); if(rnd.TrueOrFalse is true) Console.WriteLine("True"); } Rnd GetRnd() => new Rnd(); } public class Rnd { public bool TrueOrFalse => new Random().Next(2) == 0; }

NRT は、null 値可能性分析の全体的な精度を向上させますが、値が #nullable コンテキストのないコードから取得される場合など、NRT 契約に違反する場合があります。 このような場合、null 値可能性チェックで誤検知の警告が表示されることがあります。 null 値可能な API 契約を無視し、コード内の値に対する以前の操作で null 値になるかどうかが保証されている場合にのみ問題を報告するように選択できます。

この動作は、 Alt+Enter メニューから直接変更できます。

JetBrains Rider: null 許容参照型

…または JetBrains Rider 設定 の エディター | インスペクション設定 ページで null 許容参照型の警告モード オプションを使用します。

JetBrains Rider が null 許容 API コントラクトを無視する場合、null 許容性分析はプログラムの制御フローに基づいて冗長な null チェックを検出します。 そのために別のインスペクションを使用します。 例えば:

var myString = ApiMethod(); if (myString is null) throw new ApplicationException("the string is null"); // warning 'Expression is always true' // 'myString' cannot be null because it's already checked for null in our code if (myString != null) Console.WriteLine(myString);

NRT と JetBrains Rider による NRT サポートの詳細については、こちらのウェビナー録画をご覧ください:

2026 年 6 月 12 日