Person p = new Person("Bob", 10);
p = new Person("James", 20);
原来我失去了对包含“Bob”的实例的引用。如果我不想依赖c#的GC,我怎么能在重新分配p指向James之前亲自删除这个实例?只是为了避免额外的垃圾。
答案 0 :(得分:3)
你不能。你只能要求GC执行收集,但是没有办法说它实际上会占用你的对象(你也不能要求GC只收集一个对象)。
强制所有世代立即进行垃圾收集。
除非你有非常好的理由(看起来你不是),否则你不应该这样做。
答案 1 :(得分:0)
可以通过调用Collect强制进行垃圾收集,但大多数情况下,应该避免这种情况,因为它可能会产生性能问题。
答案 2 :(得分:0)
您可以重复使用该实例,而不是替换它:
Person p = new Person("Bob", 10);
p.Name = "James";
p.Number = 20;
这样就没有松散的Bob实例引用。
但是,为了代码可读性并避免潜在的错误,您不应该以这种方式重用变量。