如果块,c#编译器会优化空

vij*_*raj 2 c# compiler-optimization

C#是否有可能优化以下代码块?

if (specField == null || AddSystemType(specField, layout) 
                      || AddEnumType(specField, layout)
                      || AddUserType(specField, layout))
{
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

那么你可以使用ildasm来查看编译器为自己优化的内容.但是如果你期望它完全删除代码,它就不能 - 因为这三个方法调用可能会抛出异常或修改状态.所以它能做的最好就是发出相当于:

if (specField != null)
{
    if (!AddSystemType(specField, layout))
    {
        if (!AddEnumType(specField, layout))
        {
            AddUserType(specField, layout);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)