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