1
如果這個問題有點過分強調,我很抱歉,但是我確實喜歡我的代碼在resharper告訴我的地方不要有任何下襬線。Resharper:可能將空值賦值給標記爲「NotNull」屬性的實體
我有一個通用的清單:
var permissions = new List<Permission>();
在代碼中的某些時候,我需要測試的第一個元素:
if (permissions.First().ImportID == this.ImportId)
{
// do stuff
}
ReSharper的(正確地)抱怨權限可能爲空,所以我接受它的建議並添加一張支票:
if (permissions != null && permissions.First().ImportID == this.ImportId)
{
// do stuff
}
現在我意識到我需要防範列表是空的,所以我在那裏也添加一個檢查任何:
if (permissions != null && permissions.Any() && permissions.First().ImportID == this.ImportId)
{
// do stuff
}
和生活是美好的,代碼工作& ReSharper的是安靜。認識到空+任何()檢查將被用於經常我添加一個擴展方法:
public static bool IsEmpty<T>(this IEnumerable<T> source)
{
if (source == null)
return true;
return !source.Any();
}
唯一的問題是現在,當我使用這個:
if (!permissions.IsEmpty() && permissions.First().ImportID == this.ImportId)
ReSharper的重新開始呻吟「對標有」NotNull「屬性的實體可能爲null賦值」。
那麼,是否有一種方法讓resharper知道在執行IsEmpty()之後權限永遠不會爲null(以同樣的方式理解!= null的作用)還是我唯一的選項來忽略該消息。
謝謝喬恩,你的懷疑是完全正確的。我的代碼下面沒有更多的虛線,我很高興。謝謝 – Lobsterpants