鉴于以下情况:
var collection = myEnumerable as ICollection<MyType>;
引擎盖下会发生什么? ICollection
有一个count属性。这个演员是否枚举了可枚举的计数或更多涉及的事情?
答案 0 :(得分:8)
什么都没发生。如果myEnumerable
确实是ICollection<MyType>
collection
将包含它。否则它将是null
。就这么简单。
答案 1 :(得分:1)
重点:
当您将IEnumerable
类型对象转换为ICollection
时,它将被引用键入。
例如,从集合中删除项也会从IEnumerable
集合中删除该项目。
例如:
IEnumerable<AnyClass> enumerableObject;
ICollection<AyClass> collectingObject = (ICollection<AnyClass>)enumerableObject;
foreach(var item in collectingObject){
collectingObject.Remove(item);
}
如果您访问enumerableObject
的值,您会发现它已更新,并删除了所有值。