【发布时间】:2014-04-21 19:35:14
【问题描述】:
Person p = new Person("Bob", 10);
p = new Person("James", 20);
原来我丢失了对包含“Bob”的实例的引用。如果我不想依赖 c# 的 GC,我该如何在重新分配 p 指向 James 之前亲自删除这个实例?只是为了避免额外的垃圾。
【问题讨论】:
-
不要这样编码并在失去引用之前处置对象。
-
大多数键盘上都有特殊的“DEL”按钮 - 只需从源代码中删除额外的创建 :)...
-
如果你不想依赖 GC,唯一的选择就是选择 C# 以外的东西。虽然这个问题更多地是对对象生命周期的误解或不正确的期望。
-
“在重新分配之前”,
p包含对对象的引用...您希望p引用非对象吗?如果你想要“未定义的行为”和程序崩溃,你应该尝试使用 C/C++。 -
我对 Bob 执行了一些操作,然后我需要处理掉它并对 jams 执行一些操作。显然,这是一个非常简化的示例,我不能“删除”这两行,因为它们是必要的。 @AlexeiLevenkov。