为什么在清理代码中将 null 转换为变量?

Why cast null into variables in cleanup code?

在查看 C# 中某些库的代码时(使用 Resharper 反编译),我有时会遇到如下所示的清理代码:

public class Something
{
    private SomeObject _someObject;

    ...

    public void Dispose()
    {
        _someObject = (SomeObject) null;
    }
}

null 强制转换为此处要清除的字段类型有什么好处?

反编译器无法区分不带转换和带转换的 null 赋值,因为它们执行相同的操作并编译为相同的 IL。由于 null 有时确实需要转换,例如调用重载方法时,为简单起见,某些反编译器可能始终包含强制转换。

这里没有任何好处,我强烈怀疑原始代码没有包含转换。