ことの私はこれを持っているとしましょう:ガベージコレクションのための具体的な言及を無視
public static class FooKeeper
{
public static List<Foo> foos = new List<Foo>();
}
public class Foo
{
public Foo()
{
FooKeeper.foos.Add(this);
}
}
私はFoo型のオブジェクトがガベージコレクトを取得するときに、私は手動でリストから削除することをやりたいですFooKeeperクラス。 FooKeeperは常にそれらを参照するため、Fooオブジェクトはガベージコレクションできないため、もちろん意味がありません。
FooKeeperのリストには、その参照を無視するようにGCに指示する方法はありますか?またはこれを回避する他の方法?
何をしようとしていますか?なぜガベージコレクションのサイクルに干渉しようとしているのですか?あなたのクラスはそれを保証するものはないようです。インスタンスが参照されている限り、GCはそれをそのままにします。参照されていない場合は、通常は何もする必要はありません.GCが実行されると、GCはそれを取得します。 – xxbbcc
私はUnity3d用のタイマークラスをやろうとしていますが、必要であれば完全なコードを表示できますが、ユニティの仕組みを理解する必要があり、関連性はないと思います。 –
あなたは私の質問を誤解しました。あなたはオブジェクトの静的な静的リストを持っています - リストによって所有されているため、これらのオブジェクトが何であるかは関係ありません。リストがこれらのオブジェクトの所有者でない場合、おそらくあなたはそれらをどのように保存するか考えるべきです。あなたの質問とコメントに基づいて、これは私にとってX/Yの問題のように聞こえる - これがあなたが解決しようとしている問題が何であるか尋ねた理由です。 – xxbbcc