我试图理解别人写的一段代码的语法。
该方法返回一个bool,return语句如下所示:
return user.UserStatus == Models.User.UserStatuses.Inactive && user.IsLocked;
UserStatuses是一个枚举。
所以在我看来它返回了对象用户名为UserStatus的属性,但是UserStatus是一个枚举,而不是一个bool,然后&&将bool添加为user.IsLocked,其中是bool。
我似乎无法理解这在c#中是如何合法的,因为它似乎返回两个参数。
答案 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以产生最终结果。