如果我知道左侧将失败但是如果左侧通过右侧将被实例化,我可以将一个尚未在"AND"运算符右侧实例化的object.property放入?
在下面的示例中,第一个if/else语句为上述问题设置了另一个if语句.虽然我已经测试过它没有显示错误,但我想知道幕后会发生什么,或者有更好的方法.(有很多if/else语句使用第一个if/else语句的结果.
if (_articleGuid.Equals(Guid.Empty))
{
isArticleGuid = false;
}
else
{
article = new Article(Guid.Empty, _articleGuid);
bodyText = article.Text;
articleDate = Convert.ToDateTime(article.DateActive);
isArticleGuid = true;
}
if(isArticleGuid && article.Author != null)
{
divAuthor.InnerText = article.Author;
}
Run Code Online (Sandbox Code Playgroud)
假设我理解正确,这是安全的.该article
变量需要明确赋值,但语言保证如果&&
运算符的LHS表达式求值为false,则不会计算RHS表达式 - 所以你不会得到一个NullReferenceException
.
从C#3.0语言规范,第7.11节:
该操作
x && y
对应于操作x & y
,除非y
仅在x
不为false时进行评估.