我有一个"字符"并且角色有一个数组(或列表,或全部)"效果"适用于他们。每个"效果"是一个更改某些参数的结构。在这种情况下使用的最有效的数组类型是什么,如果必须经常使用它,那么迭代它们的最佳方法是什么。
编辑: 它就像这样
public class hero { int level; public int moveSpeed; Dictionary<effect> = effects;
int GetSpeed (){
int m = movespeed;
foreach (effect in effects) {
if (type = "movement")
m += effect.value;
}
return m;
}
}
public struct effect {string type; int value;}
public static void Main (string args) {
hero Baragorn = new hero();
Baragorn.speed = 10;
effect swamp = new effect();
swamp.type = "movement";
swamp.value = -3;
Baragorn.effects.add(swamp)
printf(Baragorn.GetSpeed().ToString());
}
答案 0 :(得分:1)
对于使用for或foreach的性能迭代和数组的差异,请参阅:http://www.dotnetperls.com/for-foreach
或检查:Performance of Arrays vs. Lists
答案将数组和列表与for和foreach进行比较。
答案 1 :(得分:0)
无论如何必须迭代时使用Dictionary
是没有意义的。当您知道要访问的密钥时,Dictionary
速度很快。它们优于List<Effect>
或Effect[]
。
List<Effect>
会更好。您无法轻松地从阵列中添加/删除,但您可以使用List
。
Effect[]
会更好。添加/删除数组是很昂贵的,因为需要复制整个数组,但如果不经常这样做,Effect[]
将是正确的数据结构。
性能指标显示使用for
迭代列表/数组比使用foreach
更快。