C#简写这有什么问题?

时间:2016-01-22 10:27:33

标签: c#

考虑到这个问题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;

但它仍然会出现同样的错误。

3 个答案:

答案 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;