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