什么返回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时实际返回
那么,当
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的优先级最低。
如果你在阅读和编写代码时考虑到了这一点,你会发现自己很欣赏重构后的代码。