考虑到这个问题shorthand If Statements: C#
这有什么问题?
int userID;
Int32.TryParse(request.userID, out userID);
userID > 0 ? user = DuoUser.LoadUser(userID): ;
它给出错误:
only assignment call increment decrement and new object expressions can be used as a statement
据我所知它应该有用,但有些不对劲?
编辑:
我也尝试过:
int userID = 0;
userID > 0 ? user = DuoUser.LoadUser(userID): null;
但它仍然会出现同样的错误。
答案 0 :(得分:6)
将最后一行更改为:
user = userID > 0 ? DuoUser.LoadUser(userID) : null ;
错误消息是正确的。您必须将三元运算符的结果赋值给某事物。
<强>更新强>
您对该问题的修改仍存在同样的问题。您没有将三元表达式的结果分配给任何内容,而是尝试在语句中进行分配。
三元运营商只是说
something = condition ? result if condition is true : otherwise this result if false.
你也可以这样做:
if (userID > 0)
user = DuoUser.LoadUser(userID);
有些人可能会发现在任何情况下都更容易阅读。
答案 1 :(得分:1)
你可以试试这个:
userID= userID > 0 ? DuoUser.LoadUser(userID): null;
答案 2 :(得分:1)
三元运算符测试条件。它比较了两个值。它产生的第三个值取决于比较结果。这可以使用if语句或其他结构来完成。
所以你的代码变成了
int userID;
Int32.TryParse(request.userID, out userID);
userID = userID > 0 ? user = DuoUser.LoadUser(userID): 0;