Ich arbeite an einem Spiel für die Xbox360, mit XNA. Auf der Xbox schneidet der Garbage Collector im Vergleich zu dem auf einem PC eher schlecht ab. Daher ist es für ein reibungslos funktionierendes Spiel von entscheidender Bedeutung, den generierten Müll auf ein Minimum zu reduzieren.Erzeugt mit einem Delegaten Müll erstellen
Ich erinnere mich, einmal zu lesen, dass das Aufrufen eines Delegaten Müll erstellt, aber jetzt für das Leben von mir kann keine Verweise auf Delegaten finden, Müll zu erstellen. Habe ich das gerade erfunden oder sind die Delegierten chaotisch?
Wenn Delegierte unordentlich sind, Bonuspunkte für das Vorschlagen einer Problemumgehung.
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);
}
Mein Code sieht vage wie das im Moment die einzige Lösung, die ich denken kann mich von Delegierten zu befreien ist in einer Klasse übergeben, die eine Schnittstelle IValueCalculator erbt, und dann kann ich die Methode auf das nennen Schnittstelle, das ist aber nicht wirklich sehr ordentlich!
Delegierten wirklich klein sein sollte, und ein nicht schaffen sollte ganz viel Müll, wenn Sie sie ausführen. (Wenn sie Müll erzeugen, sollte es eine Faust voller Bytes für jedes sein). Wenn Sie eine Schnittstellenreferenz übergeben und diese nicht verwenden, wird auch Unrat erzeugt. – CodingBarfield