ReSharper 2026.1 Help

コードインスペクション: 値型が「null」と比較されている可能性があります

次のコードを考えてみましょう。

static void PrintItems<T>(List<T> items) { foreach (var item in items) { if (item != null) { Console.WriteLine(item.ToString()); } } }

最初は明らかではないかもしれませんが、実際には、 T 型は値型(たとえば、 struct または整数)になる可能性があります。 これにより、比較が完全に無視されることになり、ユーザーが意図したものではない可能性があります。

ReSharper はここでは クイックフィックスを提案しません。なぜなら、 T のすべての可能な値型を簡単にチェックする方法がないためです。

これを解決するための 1 つのオプションは、 T パラメーターをクラス型に制約することです。

static void PrintItems<T>(List<T> items) where T : class { //... }

ただし、そのような修正の後は、 PrintItems<T>()すべての使用が総称制約を満たすことを確認する必要があります。

2026 年 6 月 12 日