User.UserRoleID == 9 ? false : true
假设这是我的条件,现在正在使用三元运算符。
有人建议除了If之外的其他一些方法
答案 0 :(得分:46)
转转比较:
bool b = User.UserRoleID != 9;
答案 1 :(得分:3)
Patrick Hofman的answer非常适合OP案例,因为非常具体返回true / false。对于更一般的情况,如果是要走的路:
User.UserRoleID == 9 ? doOneStuff() : doTheOtherStuff()
可以很容易地用等效的if / else
代替if(User.UserRoleID == 9){
doOneStuff();
}else{
doTheOtherStuff();
}
在分配和返回的情况下,您需要在两个分支中表达左侧部分:
int foo = (User.UserRoleID == 9) ? doOneStuff() : doTheOtherStuff()
if(User.UserRoleID == 9){
int foo = doOneStuff();
}else{
int foo = doTheOtherStuff();
}
如果这个三元组是一个参数,你需要明确地将它提取到一个变量:
int result = myFunction(User.UserRoleID == 9 ? 4 : 5)
int parameter;
if(User.UserRoleID == 9){
parameter = 4;
}else{
parameter = 5;
}
result = myFunction(parameter);
答案 2 :(得分:1)
You should use an if. Seriously;但如果由于任何原因你无法使用那个农民 if 声明(¿?),你可以使用开关。
return (User.UserRoleID == 9) ? false : true
switch(User.UserRoleID == 9){
case true:
return true;
case false:
return false;
default:
//return... wait, what?
throw new Exception("Boolean math broken. Please, restart the universe");
}
更一般的情况:
return (User.UserRoleID == 9) ? doOneThing(): doTheOtherThing();
switch(User.UserRoleID == 9){
case true:
return doOneThing();
case false:
return doTheOtherThing();
}
有些人不喜欢这种切换方法。好吧,你也可以尝试这个另一个:
try {
bool result = User.UserRoleID == 9;
throw new Activator.CreateInstance(result.ToString() + "Exception");
} catch (TrueException e){
return doOneThing();
}catch(FalseException e){
return doTheOtherThing();
}
注意:请不要做任何此事。你可以这样做,但它太可怕了,如果他们看到这段代码,你会被鄙视(并且可能被解雇)。你应该被警告
答案 3 :(得分:0)
如何仅使用User.UserRoleID == 9
代替true
或false
文字?如果这最终会在整个代码中重复,那么这并不理想,但如果您只需要一次或两次......