什么返回myVar!=null实际上是指

本文关键字:实际上 null 返回 myVar 什么 | 更新日期: 2023-09-27 18:22:31

Resharper是一个很棒的工具,但它有时会让我混淆建议的代码的真正含义。我有这个代码:

private bool DoesUserExists()
{
    var user = De.Users.FirstOrDefault(u => u.Username == CurrentUser.Username);
    return user != null;
}

我最初有:

if(user == null)
    return false;
else
    return true;

但雷沙珀提出了最重要的代码。然而,在我看来,这似乎是在说如果它不为null,则返回user。但是该方法只接受bool返回,而不接受类。

那么返回用户是什么!=null在为null时和非null时实际返回

什么返回myVar!=null实际上是指

那么,当return user != null为空并且当它不是时

它只是计算表达式。如果user为空,则返回false;如果user不为空,那么返回true

把这看作是把比较结果分配给一个局部变量,然后才返回它:

bool isNotNull = user != null;
return isNotNull;

或者:

bool isNull = user == null;
return !isNull;

只有当user变量不为空时,isNotNull才会为真。

从语义上讲,它与if-else语句完全相同。

不确定我在这里添加了任何值,@Yuval的答案是正确和清晰的,但这样看可能会有所帮助。

您正在考虑解析如下代码:

(return user) (!= null)

也就是说,您看到"return user",并想知道该行的其余部分在做什么。但return不是这样工作的。它评估行的其余部分,并返回该值。它更像

(return) (everything else)

或者,在特定情况下

(return) (user != null)

return最后执行的位置。

这很像运算符优先级,其中3+5*2必须计算为3+10而不是8*2,因为*的优先级(必须首先计算)高于+。CCD_ 13的优先级最低。

如果你在阅读和编写代码时考虑到了这一点,你会发现自己很欣赏重构后的代码。