![]() |
1
4
这一决定引起了极大的痛苦,这在评论中很明显。 feedback article . |
![]() |
2
6
From MSDN 以下内容:
ICollection<t>接口没有索引器,因此固定大小的ICollection<t>自动为只读-无法修改现有项。 可能是ICollection<t>.IsFixedSize的属性名比ICollection<t>.IsReadOnly更好,但两者都意味着相同的内容-无法添加或删除元素,即与ilist.IsFixedSize相同。 数组是固定大小的列表,但不是只读的,因为可以修改元素。 作为ICollection<t>,它是只读的,因为ICollection<t>无法修改元素。 这看起来可能令人困惑,但它是一致的和合乎逻辑的。 稍微不一致的是,通用IList<t>接口具有继承自ICollection<t>的IsReadOnly属性,其语义因此不同于非通用IList.IsReadOnly。我认为设计者知道这种不一致性,但是由于向后兼容性的原因,无法返回并更改非通用IList的语义。 总之,IList可以是:
|
![]() |
3
0
这种行为的原因归结为
第一个是类型数组的一个普通属性。此属性满足IList接口的IsReadOnly属性。无论出于何种原因,在clr的1.0中,他们认为该属性应返回true。
第二个是类型的显式属性实现
真正的问题是为什么版本之间会发生变化?我不知道,但我的猜测是,作者认为更适合观察
|
![]() |
4
0
从文档中 Array Class :
因此,由于泛型集合不支持添加、插入或删除,
不是他们想看到的。当他们在v2中添加泛型接口时,只有在数组被强制转换时才能调用这些接口,因此对于那些更合理的接口,返回true。 |
![]() |
Tooleh · 只有第一行上的按钮在表中起作用 7 年前 |
![]() |
Ahmad · 如何使用C#在unity中避免列表中的重复值 7 年前 |
![]() |
IPS · 如何知道类型结构属性的偏移值? 7 年前 |
![]() |
Shakeel Hussain Mir · 阻止刷新锚点标记单击 7 年前 |
![]() |
Nag Arjun Reddy · 如何在循环中使用集合 8 年前 |