在许多不同公司中使用不同版本的 .NET 编写的许多遗留系统上工作,我一直在寻找以下模式的示例:
public void FooBar()
{
object foo = null;
object bar = null;
try
{
foo = new object();
bar = new object();
// Code which throws exception.
}
finally
{
// Destroying objects
foo = null;
bar = null;
}
}
对于任何知道 .NET 中内存管理如何工作的人来说,这种代码是非常不必要的。垃圾收集器不需要你手动分配null
来告诉旧对象可以被收集,分配也不需要null
指示 GC 立即收集对象。
这种模式只是噪音,使得更难理解代码试图实现的目标。
那么,为什么我一直在寻找这种模式呢?有学校教授这种做法吗?是否有一种语言需要将null
值分配给本地范围的变量才能正确管理内存?明确分配null
我没有意识到的还有一些额外的价值吗?