可能的 NullReferenceException - 但为什么呢?

Possible NullReferenceException - but why?

假设我有一个方法:

private ObservableCollectionExtended<Record> myCollection;

public void SetLoadingProperty(bool isLoading)
{
  if (!myCollection?.Any() ?? false)
    return;

  foreach(var record in myCollection)
  {
    record.IsLoading = isLoading;
  }
}

是否有任何情况导致我在 foreach 循环中因 myCollection 为空而得到 NullReferenceException?

你的意思是:

  if (!(myCollection?.Any() ?? false))
    return;

您只需要在您的方法中进行空检查:

private ObservableCollectionExtended<Record> myCollection;

public void SetLoadingProperty(bool isLoading)
{
  if (myCollection == null)
    return;

  foreach(var record in myCollection)
  {
    record.IsLoading = isLoading;
  }
}

如果您的集合不包含任何项目,则不会执行循环。不需要检查 Any。始终尝试编写尽可能简单的代码。

在线演示:https://dotnetfiddle.net/ComNsN