理解return语句的c#语法

时间:2017-01-31 19:58:46

标签: c#

我试图理解别人写的一段代码的语法。

该方法返回一个bool,return语句如下所示:

 return user.UserStatus == Models.User.UserStatuses.Inactive && user.IsLocked;

UserStatuses是一个枚举。

所以在我看来它返回了对象用户名为UserStatus的属性,但是UserStatus是一个枚举,而不是一个bool,然后&&将bool添加为user.IsLocked,其中是bool。

我似乎无法理解这在c#中是如何合法的,因为它似乎返回两个参数。

4 个答案:

答案 0 :(得分:4)

添加一些括号,或将您的行分成多个语句,这是有道理的。编译器正在为您(或多或少)做这件事。您的陈述相当于:

return ((user.UserStatus == Models.User.UserStatuses.Inactive) && user.IsLocked);

bool inactive = user.UserStatus == Models.User.UserStatuses.Inactive;
bool inactiveAndLocked = inactive && user.isLocked;
return inactiveAndLocked;

这里的关键是返回正在使用表达式(不是参数)并使用该表达式的结果,这只是C#规范所指示的一个“事物”。

答案 1 :(得分:0)

它只是返回一个布尔条件。假设您也可以在IF语句中检查相同的代码,如:

if(user.UserStatus == Models.User.UserStatuses.Inactive && user.IsLocked)

答案 2 :(得分:0)

bool result = (user.UserStatus == Models.User.UserStatuses.Inactive) &&
               user.IsLocked;
return result;

答案 3 :(得分:-1)

UserStatus是一个枚举,但枚举的基本类型是int。这与特定的枚举类型进行比较。所以第一部分基本上是(int == int),它产生一个bool。然后通过IsLocked值(bool&& bool)有条件地使用bool以产生最终结果。