次のような場合を考えます。
var collection = myEnumerable as ICollection<MyType>;
内部で何が起こりますか?ICollection
countプロパティがあります。このキャストは、カウントを取得するために列挙可能なものを列挙しますか、それとももっと複雑なことが起こりますか?
次のような場合を考えます。
var collection = myEnumerable as ICollection<MyType>;
内部で何が起こりますか?ICollection
countプロパティがあります。このキャストは、カウントを取得するために列挙可能なものを列挙しますか、それとももっと複雑なことが起こりますか?
何も起こりません。myEnumerable
確かにある場合はICollection<MyType>
collection
それが含まれます。それ以外の場合はになりますnull
。そのような単純な。
大事なポイント:
IEnumerable
型オブジェクトをキャストするときはいつでもICollection
、型付きで参照されます。
同様に、コレクションからアイテムを削除すると、コレクションからもアイテムが削除されます。IEnumerable
例えば:
IEnumerable<AnyClass> enumerableObject;
ICollection<AyClass> collectingObject = (ICollection<AnyClass>)enumerableObject;
foreach(var item in collectingObject){
collectingObject.Remove(item);
}
そして、あなたがあなたの価値にアクセスするならば、enumerableObject
あなたはそれが更新されて、すべての価値が取り除かれているのを見つけるでしょう。