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