如果“安全”是一个误导性的词,我很抱歉,我不确定在这种情况下使用什么词。我想知道例如是否使用
public static List<myObj> myList = new List<myObj>();
在 C# 中是可以接受的。无论如何,静态变量在应用程序的整个生命周期中都存在于 RAM 中,因此例如在 ASPX 等应用程序中,这可能会导致一些不需要的行为,并且 GC 不会收集分配。
我注意到,如果我有一个静态的对象列表,比如一个静态的“全局”类,即。
globl.myList.add(foo);
然后它们会在应用程序的整个生命周期中保持不变。这是否意味着如果我有一个静态对象列表,那么附加到列表中的对象本身就是静态的,还是因为有对它们的引用,GC 不收集它们?换句话说,如果我删除了一个元素,GC 会稍后收集它还是会卡在堆中直到应用程序死亡?
提前谢谢!