C#でオブジェクトプールを再発明する時間です

言語を変わるたびにゲーム内のオブジェクトプールを作り直すのが面倒だ。だがその言語の特性をつかむ練習としてはいいね。

public class ActorPool<T, ST, SP> : IActorPool, IEnumerator<T>, IEnumerable<T>
    where T : Actor<ST, SP>, new()
    where ST : ActorState, new()
    where SP : ActorSpec<ST>

クラス宣言だけで場所食いすぎ。foreachのためのIEnumerable.GetEnumeratorメソッドとかIEnumerator.Currentプロパティとかを、System.Collections用とSystem.Collections.Generic用の両方分実装させられるのだが、こんなもんなのか?後方互換性のためかもしれんが、面倒だ。