4

鉴于这样的情况:

var collection = myEnumerable as ICollection<MyType>;

引擎盖下会发生什么?ICollection有一个计数属性。这个强制转换是否枚举了可枚举以获取计数或是否发生了更多涉及的事情?

4

2 回答 2

9

什么都没发生。如果myEnumerable确实是一个ICollection<MyType> collection将包含它。否则会null。就那么简单。

于 2012-09-18T09:56:31.900 回答
1

很重要的一点:

当您将IEnumerable类型对象转换为类型时ICollection,它将被引用类型。

就像,从集合中删除Item也会从集合中删除该项目IEnumerable

例如:

IEnumerable<AnyClass> enumerableObject;

ICollection<AyClass> collectingObject = (ICollection<AnyClass>)enumerableObject;

foreach(var item in collectingObject){

collectingObject.Remove(item);

}

如果您访问 value ,enumerableObject您会发现它已更新,所有值都已删除。

于 2016-09-29T05:29:46.073 回答