ArrayList的Adapter引出的Array转ArrayList的思考

本文探讨了在.NET框架中使用ArrayList来包含检查Array的问题。作者习惯将string[]转换为ArrayList并使用Contains方法,但在尝试从ArrayList移除元素时遇到了固定大小的异常。文章详细解释了Array和ArrayList之间的引用关系及适配机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人习惯所致,在做集合包含比较时,总喜欢用ArrayList.Contains方法(没有细查资料,分析应该是调用各个type的equal,如果不对,欢迎指正.).

所以通常在比较如字符串数组(string[])是否包含某个字符串时,总喜欢把string[]转成ArrayList.然后再进行调用contains进行比较.

虽然用了很久,但是意识上并未去想, Array与ArrayList到底被Adapt成什么样了呢?

今天再次使用时,偶然需要remove 部分转换过来的ArrayList成员,结果运行时异常:数组是固定大小的.

怎么会呢?

难道Adapt过来之后,就Fixedsize了?

查资料后,才知道,Adapt方法是直接把Array包裹在其里面,而没有进行任何复制,也就是说,这时Array和ArrayList是同一个引用。

这样就可以解释了.

因为要remove掉ArrayList元素时,其实是在操作Array(string[]),而array的大小是固定的,自然有异常报出了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值