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

C# 为什么在清理代码中将null强制转换为变量?,c#,.net,dispose,resource-cleanup,C#,.net,Dispose,Resource Cleanup,在C#(使用Resharper反编译)中查看某些库中的代码时,我有时会遇到如下清理代码: public class Something { private SomeObject _someObject; ... public void Dispose() { _someObject = (SomeObject) null; } } 将null强制转换为此处要清除的字段类型有什么好处?反编译器无法区分不使用强制转换和使用强制转换分配nu

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

public class Something
{
    private SomeObject _someObject;

    ...

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

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

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


这里没有好处,我强烈怀疑原始代码不包括强制转换。

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


这里没有好处,我强烈怀疑原始代码不包括强制转换。

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


这里没有好处,我强烈怀疑原始代码不包括强制转换。

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


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

这只是反编译器无法表示生成它试图编译的IL的实际源代码。演员组在该代码中什么也不做。您应该始终对反编译代码保持一定的警惕。@Servy我也这么怀疑,但现在我肯定知道了。谢谢。这只是因为反编译器无法表示生成它试图编译的IL的实际源代码。演员组在该代码中什么也不做。您应该始终对反编译代码保持一定的警惕。@Servy我也这么怀疑,但现在我肯定知道了。谢谢。这只是因为反编译器无法表示生成它试图编译的IL的实际源代码。演员组在该代码中什么也不做。您应该始终对反编译代码保持一定的警惕。@Servy我也这么怀疑,但现在我肯定知道了。谢谢。这只是因为反编译器无法表示生成它试图编译的IL的实际源代码。演员组在该代码中什么也不做。您应该始终对反编译代码保持一定的警惕。@Servy我也这么怀疑,但现在我肯定知道了。谢谢