本人习惯所致,在做集合包含比较时,总喜欢用ArrayList.Contains方法(没有细查资料,分析应该是调用各个type的equal,如果不对,欢迎指正.).
所以通常在比较如字符串数组(string[])是否包含某个字符串时,总喜欢把string[]转成ArrayList.然后再进行调用contains进行比较.
虽然用了很久,但是意识上并未去想, Array与ArrayList到底被Adapt成什么样了呢?
今天再次使用时,偶然需要remove 部分转换过来的ArrayList成员,结果运行时异常:数组是固定大小的.
怎么会呢?
难道Adapt过来之后,就Fixedsize了?
查资料后,才知道,Adapt方法是直接把Array包裹在其里面,而没有进行任何复制,也就是说,这时Array和ArrayList是同一个引用。
这样就可以解释了.
因为要remove掉ArrayList元素时,其实是在操作Array(string[]),而array的大小是固定的,自然有异常报出了.
本文探讨了在.NET框架中使用ArrayList来包含检查Array的问题。作者习惯将string[]转换为ArrayList并使用Contains方法,但在尝试从ArrayList移除元素时遇到了固定大小的异常。文章详细解释了Array和ArrayList之间的引用关系及适配机制。
1938

被折叠的 条评论
为什么被折叠?



