簡體   English   中英

如果Any()為true,為什么LINQ在Count()上拋出空引用錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM