[英]Why does LINQ throw a null reference error on Count() if Any() is true?
我有一個問題-如果.Count()
.Any()
返回true,為什么我會在此IEnumerable的.Count()
方法處獲得空引用異常?
Logger.Normal("{0}", targetWorkflow.GetStages().Any() ? "any is true!" : "any is false");
Logger.Normal("{0}", targetWorkflow.GetStages().Count());
錯誤:
StackTrace = [ at Sth.Workflow.<GetStages>d__13.MoveNext()XX at System.Linq.Enumerable.Count[TSource]
老實說,如果.Any()
為true,我希望Count()
方法至少返回1,而如果Any()
為false,它將返回0?
請讓我知道我錯了。
另外-請注意,我並不是要解決實際問題,而是要了解為什么Any() == true
不能確保集合健康且“可數”。
當生成不是序列中第一項的某些項時, GetStages()
似乎在內部在其自己的代碼中引發異常。 Any
都可以在獲得第一個項目后立即停止,這就是為什么它不會引發任何異常,但是Count
需要迭代整個序列才能獲得其結果。
GetStages()
方法內部存在一些錯誤(或與您正在使用的用途有所沖突),這些錯誤與所顯示的代碼無關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.