【发布时间】:2009-10-17 17:36:40
【问题描述】:
我正在使用 XNA 为 xbox360 开发游戏。 Xbox 上的垃圾收集器与 PC 上的垃圾收集器相比性能相当差,因此将产生的垃圾保持在最低限度对于流畅运行的游戏至关重要。
我记得曾经读到过调用委托会产生垃圾,但现在我一生都找不到任何对委托产生垃圾的引用。是我胡编乱造的还是代表乱七八糟的?
如果代表搞砸了,建议解决方法的奖励积分。
public delegate T GetValue<T>(T value, T[] args);
public static T Transaction<T>(GetValue<T> calculate, ref T value, params T[] args) where T : class
{
T newValue = calculate(value, args);
return foo(newValue);
}
目前我的代码看起来很模糊,我能想到的摆脱委托的唯一解决方案是传入一个继承接口 IValueCalculator 的类,然后我可以调用该接口上的方法,那不是不过真的很整洁!
【问题讨论】:
-
委托应该非常小,并且在执行它们时不应产生大量垃圾。 (如果他们创建垃圾,那么每个人都应该是一个充满字节的拳头)。传递接口引用并且在完成后不使用它也会产生垃圾。
标签: c# delegates garbage-collection xna xbox360