我有一个游戏,其中玩家连接并查看挑战列表。在代码中,挑战按状态存储在字典中,因此我有一个Dictionary<string, List<Challenge>>
来存储它们。
我有一个处理所有相关挑战操作的类,例如从服务器检索它们,并且此类发送事件以通知感兴趣的对象有关更新。我的问题是我的代表是事件发送整个字典,我意识到这可能是非常糟糕的垃圾创建甚至执行速度。
我的应用程序将在移动设备上运行,我正在使用Unity,所以我只限于.Net 3.5(约4个功能)。性能在这里至关重要,所以我想知道什么是更有效的方法呢?
我唯一能看到的就是从事件委托中删除字典,只访问我的单例实例变量,而不是将其作为参数。但我想确定没有更好的方法,这确实会更有效率。
答案 0 :(得分:2)
类是reference types,Dictionary<TKey, TValue>
是一个类,因此,您不是要复制字典而只是指向不同引用中的相同字典(例如,提供引用的事件参数)所谓的字典)。
如果您非常担心事件处理程序的内存问题,可以查看weak event pattern,这可以防止某些用例中出现内存泄漏(但是您需要使用.NET 4.0)至少...)。