可能的 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
。始终尝试编写尽可能简单的代码。
假设我有一个方法:
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
。始终尝试编写尽可能简单的代码。