コードインスペクション:null 非許容エンティティへの「null」割り当ての可能性がある
[NotNull] 属性は、特定のシンボルが決して null でないことを示す契約を導入します。
[NotNull] はほぼすべての場所で使用できるため、このインスペクションが [NotNull] がもたらす契約違反を見つけるのに役立つさまざまな状況があります。 ここにいくつかの例があります:
[NotNull]は、追加の null チェックなしで、それに応じてマークされたシンボルを使用できます。ただし、パブリックメンバーを
[NotNull]でマークする場合は、パブリックメンバーが実際に null を返さないようにする必要があります。 アノテーションが追加されると、JetBrains Rider はこの契約が有効かどうかを確認します:[NotNull] public object CreateNotNullableObject() { return null; // Warning: Possible 'null' assignment to entity with '[NotNull]' attribute }[NotNull]はパラメーターの契約としても使用できます。例えば、パラメーターをチェックし、ArgumentNullExceptionをスローする場合、nullが渡されたときです。 この場合、JetBrains Rider は注釈付きパラメーターにnull値を渡そうとした場合に、そのメソッドの利用者に警告します:public static void Foo([NotNull] string param) { if(param == null) throw new ArgumentNullException(nameof(param)); // Do something with 'param' } void Test() { Foo(null); // Warning: Possible 'null' assignment to entity with '[NotNull]' attribute }
このインスペクションは、ソースコード内で NotNull でマークされたシンボルだけに限定されるわけではありません。 このアノテーションは 外部アノテーション を介して追加することもでき、.NET Framework クラスライブラリや他のよく使われるライブラリの関連シンボルにはすでに適用されています。これらのライブラリの外部アノテーションは JetBrains Rider のインストールに含まれています。
2026 年 6 月 12 日