Dav*_*don 4 c# resharper refactoring return-type
Resharper是一个很棒的工具,但它有时让我对建议的代码真正含义感到困惑.我有这个代码:
private bool DoesUserExists()
{
var user = De.Users.FirstOrDefault(u => u.Username == CurrentUser.Username);
return user != null;
}
Run Code Online (Sandbox Code Playgroud)
我最初有:
if(user == null)
return false;
else
return true;
Run Code Online (Sandbox Code Playgroud)
但是Resharper建议使用顶级代码.但是,如果它不是null,那我认为是返回用户.但该方法只接受bool返回而不是类.
那么返回user!= null实际上返回的是null,当它不是?
那么
return user != null当它为null时它实际返回什么呢?
它只是评估表达式.如果user为null则返回false,如果user不为null,则返回true.
您可以将此视为将比较结果分配给局部变量,然后再将其返回:
bool isNotNull = user != null;
return isNotNull;
Run Code Online (Sandbox Code Playgroud)
要么:
bool isNull = user == null;
return !isNull;
Run Code Online (Sandbox Code Playgroud)
isNotNull只有当user变量不为null时才会成立.
从语义上讲,它与您的if-else陈述完全相同.