代码检查:可能将值类型与 'null' 进行比较
请考虑以下代码片段:
static void PrintItems<T>(List<T> items)
{
foreach (var item in items)
{
if (item != null)
{
Console.WriteLine(item.ToString());
}
}
}
虽然一开始可能并不明显,但 T 类型实际上可以是值类型(例如, 结构体 或整数)。 这将导致比较被完全忽略,这可能不是用户的本意。
JetBrains Rider 在这里不建议任何 快速修复 ,因为没有简单的方法检查 T 的所有可能值类型。
解决此问题的一种方法是将 T 参数限制为类类型:
static void PrintItems<T>(List<T> items) where T : class
{
//...
}
然而,在进行此修复后,您必须确保 PrintItems<T>() 的所有用法都满足泛型约束。
最后修改日期: 2025年 9月 26日