gpt4 book ai didi

c# - 为什么 ((IList)array).ReadOnly = True 但 ((IList)array).ReadOnly = False?

转载 作者:IT王子 更新时间:2023-10-29 04:34:54 26 4
gpt4 key购买 nike

<分区>

我知道在 .NET 中所有数组都派生自 System.Array 并且 System.Array 类实现了 IList , ICollectionIEnumerable .实际的数组类型也实现了 IList<T> , ICollection<T>IEnumerable<T> .

这意味着如果您有一个 String[] , 那么 String[]对象也是一个 System.Collections.IList和一个 System.Collections.Generic.IList<String> ;.

不难看出为什么那些 IList 会被认为是“只读”,但令人惊讶的是......

String[] array = new String[0];
Console.WriteLine(((IList<String>)array).IsReadOnly); // True
Console.WriteLine(((IList)array).IsReadOnly); // False!

在这两种情况下,都尝试通过 Remove() 删除项目和 RemoveAt()方法导致 NotSupportedException。这表明这两个表达式对应于只读列表,但 IList 的 ReadOnly属性未返回预期值。

怎么会?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com