ActionScript 3中C#的通用词典相当于什么?

时间:2009-08-08 03:29:24

标签: actionscript-3

我想拥有一个对象集合,这些对象将是我创建的一个名为Server的类。服务器有一个字符串属性,它是它的IP地址,以及许多其他数据和对象。

我将有方法为此集合添加和删除服务器,并且需要偶尔通过它的IP地址查找服务器。如果我在C#中这样做,我会使用Dictionary<其中IP字符串是键,而Server对象是值。在尝试添加项目之前,我可以轻松检查字典中是否存在项目。

所以我的要求是: 1.能够将物品添加到集合中(我不关心他们去哪里,正面,背面,中间) 2.能够从集合中的任何位置删除项目。 3.能够确定集合中是否已存在特定IP地址。 4.能够通过IP获取对Server对象的引用。 编辑:哦,是的,我希望它像Vector一样强烈打字...我想这不是绝对必要的,但会很好。

所以似乎关联数组会给我我需要的东西,除了我不确定如何做#3或#4。

public var Servers:Object = new Object( );

public function AddServer(server:Server):void
{
   //TODO:need to check if it exists first and throw an error if so
   //(it's the caller's responsibility to call DoesServerExist first)

   Servers[server.IP] = server;
}


public function RemoveServer(IP:string):void
{
   //is it OK to attempt to delete an item if it doesn't already exist?
   //do I need to check if it exists before doing delete?
   delete Servers[IP];
}

public function DoesServerExist(IP:string):bool
{  
    //Do I loop through all the elements testing it's IP property?
    //Or can I just do something like this?
    if(Servers[IP] == null)
    {
        return false;
    }
    else
    {
        return true;
    }
}

public function GetServer(IP:string):Server
{
    return Servers[IP];//what is returned if this IP doesn't exist?
}

2 个答案:

答案 0 :(得分:3)

叫我高飞,但为什么不使用Dictionary课?除了强力打字之外,它可以为您提供一切。

如果你想要强类型,那么我会说你需要一个自定义容器,它包含一个Vector of Servers,以及一个索引到Vector的字典或关联的IP字符串数组。然后,您需要公开访问,测试,插入和删除的方法。

答案 1 :(得分:-3)

您可以使用数组。例如:

var dict:Array = [];
var ip = "164.157.012.122"
dict[ip] = "Server name"

if (dict[ip] == "Server name"){
    trace("Yay");
}

//membership
if (dict[ip]){
    trace(ip + " is a member of dict");
} else {
    trace (ip + " is not a member");
}

//removal:
dict[ip] = null;

不幸的是,AS3并没有内置的Dictionary类。