返回myVar!= null实际上是什么意思?

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,当它不是?

Yuv*_*kov 7

那么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陈述完全相同.