当前位置: 代码迷 >> .NET新技术 >> HashTable 存键值的有关问题
  详细解决方案

HashTable 存键值的有关问题

热度:546   发布时间:2016-04-25 01:42:55.0
HashTable 存键值的问题
我现在有 角色名称、道具编号、道具对象。
我需要用HashTable 存在一起,比如 同一个玩家,道具编号是一样,那么数量需要累加。我贴源码给高手看下

if(ht.ContainsKey(cha_name)
{
HashTable temp = (HashTable)ht[cha_name];
if(temp.ContainsKey(sitem.sID))
{
SItemGrid _grids = (SItemGrid)ht2[sitem.sID];
_grids.sNum += sitem.sNum;
continue;
}
ht2.Add(sitem.sID,sitem);
ht[cha_name] = ht2;
continue;
}
if(ht2.Count == 0)
{
ht2.Add(sitem.sID,sitem);
}
ht.Add(cha_name,ht2);
 


------解决方案--------------------
不是很明白楼主的代码,hashtable保存的都是object的key,value,如果你只是保存数量。每次操作都需要装箱,拆箱操作。要是这个游戏玩的人多,那性能也不好,还不如改用字典。
C# code
//用户道具保存字典            Dictionary<string, Dictionary<int, int>> userProps = new Dictionary<string, Dictionary<int, int>>();           //如果是循环处理,那么可以把循环放在if外面就可以了            //判断是否存在用户,假设用户名就是userName            if (userProps.ContainsKey("userName"))            {                Dictionary<int, int> props = userProps["userName"];                //判断道具ID是否在道具列表中,我们假设道具ID是0                if (props.ContainsKey(0))                {                    //如果道具ID已经在道具列表中,该道具的数量等于已经存在的道具数量加新有的道具数量,比如新的道具为100个,具体时候用变量代替就可以了                    props[0] = props[0] + 100;                }                else                {                    props.Add(0, 100);//如果道具在道具列表中不存在,那么把道具加入到道具列表中                }            }            else//针对用户不存在的操作,需要先添加用户,再添加道具列表            {                //添加用户及道具列表                userProps.Add("userName", new Dictionary<int, int>());                //接下来添加道具到用户下面                userProps["userName"].Add(0, 100);            }//获取用户某个道具数量            int propsCount=0;            if (userProps.ContainsKey("userName"))            {                Dictionary<int, int> props = userProps["userName"];                if (props.ContainsKey(0))                {                    propsCount = props[0];                }            }
  相关解决方案