1

这是一个简单的代码:

var a:Array = new Array( ins0, ins1, ins2, ins3,...., ins10000) ;
findIns( ins1500) ;

function findIns( ins:SomeInstance ) {  
    for ( var i = 0 ; i< a.length ; i++)  {
        if ( a[i] == ins ) {
            trace ( "FOUND IT");
            break; 
        }
    }
}

在上面的代码中没有“int”或“string”。它们是一些复杂类的实例。那么在这种情况下使用向量代替数组是否明智。

在我看来,这应该是明智的,因为实例毕竟是“数字内存位置”?

4

2 回答 2

1

如果数组的内容都是同一个类的实例,那么 yesVector肯定会比Array.

有关更多信息,请参阅文档:

  • 性能:使用 Vector 实例时数组元素访问和迭代比使用 Array 时快得多。

  • 类型安全:在严格模式下,编译器可以识别数据类型错误。数据类型错误的示例包括将不正确数据类型的值分配给 Vector 或在从 Vector 读取值时期望错误的数据类型。但是请注意,当使用 push() 方法或 unshift() 方法向 Vector 添加值时,不会在编译时检查参数的数据类型。相反,它们会在运行时进行检查。

  • 可靠性:运行时范围检查(或固定长度检查)显着提高了数组的可靠性。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Vector.html

于 2013-01-14T08:43:37.023 回答
1

是的你是对的。存储在向量中的是对对象的引用,而不是对象本身。您可以检查是否执行以下操作:

var ref:yourType = a[0];
a[0] = someOtherObjectInstance;
trace(ref.toString());

你会发现它ref仍然指向你原来的对象。

于 2013-01-14T08:59:54.910 回答