以下两个代码片段是否实现了相同的功能?
我的原始代码:
if (safeFileNames != null)
{
this.SafeFileNames = Convert.ToBoolean(safeFileNames.Value);
}
else
{
this.SafeFileNames = false;
}
ReSharper认为更好的做法是:
this.SafeFileNames = safeFileNames != null &&
Convert.ToBoolean(safeFileNames.Value);
我认为上面的代码更易于阅读,是否有令人信服的理由要更改它?
它会执行得更快,最重要的是,代码是否会做完全相同的事情?
另外,如果您查看:Convert.ToBoolean(safeFileNames.Value);
部分,那么这肯定会导致空引用异常吗?
this.SafeFileNames = bool
本地的 safeFileNames 是一个强类型的自定义对象,以下是该类:
public class Configuration
{
public string Name
{
get;
set;
}
public string Value
{
get;
set;
}
}
safeFileNames != null
将会进行短路运算,因此您将不会遇到Convert.ToBoolean(safeFileNames.Value)
所引发的NullReferenceException
异常 -- 这就是&&
运算符的工作方式。 - Nate