在 null 合并运算符中检查 null

Check for null inside null-coalescing operator

我正在使用 Resharper,通常那个东西会在我的代码部分下划线,这些代码可能会抛出空引用异常。但在这种情况下,Resharper 似乎认为代码没有问题。为什么?

public static bool Check<T>(IEnumerable<T> docs)
{
   var list = docs as IList<T> ?? docs.ToList();
   return list.Count == 3;
}

Resharper 在这里没有强调我的任何内容。我在这里错过了什么?如果 docs 为 null,则应该有一个例外。提前谢谢大家。

我认为 ReSharper 检查 NullReferenceExceptions 但 IEnumerable.ToList() 抛出 ArgumentNullException.

有道理。您可能会传入一个实现 ReSharper 可能不知道的空模式的对象,这可能会导致错误和烦人的警告,因此我认为这在 ReSharper

中很难实现