AS3深拷贝的一个测试总结

package
{
	
	import flash.display.Sprite;
	import flash.net.registerClassAlias;
	import flash.utils.ByteArray;
        import flash.utils.Dictionary;


	public class TestByteArrayCopy extends Sprite
	{
		public function TestByteArrayCopy()
		{
			registerClassAlias("1111111", TestValue);
                        registerClassAlias("111111111", Dictionary);
			var TestValue = new TestValue();
			var key:TestValue = new TestValue();
			p.bagItems[key] = new TestValue();
                        p.bagItems["111"] = new TestValue();
			var byte:ByteArray = new ByteArray();
			byte.writeObject(p);
			byte.position =0;
			var o:Object = byte.readObject();
			var p2:TestValue = TestValue(o);
			
			trace(p2 is TestValue);
			trace(p2);
			trace(p2.bagItems[key]);
                        trace(p2.bagItems["111"]);
		}
	}
}

import flash.utils.Dictionary;

class TestValue
{
	public var bagItems:Dictionary = new Dictionary();
}


在这段代码是我们AS3中 常用的深拷贝

我做了这么一个小测试,得出几个结论:

1:
发现如果 我们不进行registerClassAlias("1111111", TestValue);
这拷贝出来的类对象 无法转换类型

2:
如果我们的对象中有一个Dictionary, 并且这个Dictionary的KEY 为一个对象,
那么我进行深复制后, 这个对象KEY 将一并被复制,  这样我们将无法在从这个Dictionary中通过原来的对象KEY获得 我们想要的值

你可能感兴趣的:(.net,Flash)