通过foreach迭代JsonData会获取IDictionary枚举数,而不是IList枚举数。

foreach (var jsonEntry in jsonData)


这导致我的代码抛出错误。

InvalidOperationException: Instance of JsonData is not a dictionary
LitJson.JsonData.EnsureDictionary ()
LitJson.JsonData.System.Collections.Specialized.IOrderedDictionary.GetEnumerator ()
LitJson.JsonData.System.Collections.IDictionary.GetEnumerator ()


将对象强制转换为IList会使Resharper发出警告“类型强制转换是多余的”。

foreach (var jsonEntry in jsonData as IList)


为什么Resharper认为演员表是多余的?

最佳答案

为什么Resharper认为演员表是多余的?


如果您这样认为:

IList是一个ICollection,IDictionary也是一个ICollection,因为它们两个都实现了“ ICollection”,Resharper的警告应该变得清楚。

关于c# - Resharper认为类型转换是多余的,但是如果没有类型转换,代码将无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33258145/

10-11 18:46