C# 速记这有什么错?

C# 速记这有什么错?,c#,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;
    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;

但它仍然会给出相同的错误。

将最后一行更改为:

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);

有些人可能会发现在任何情况下都更容易阅读

将最后一行更改为:

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);
有些人可能会发现在任何情况下都更容易阅读

您可以尝试以下方法:

userID= userID > 0 ? DuoUser.LoadUser(userID): null;
您可以尝试以下方法:

userID= userID > 0 ? DuoUser.LoadUser(userID): null;

三元运算符测试一个条件。它比较两个值。它生成第三个值,该值取决于比较结果。这可以通过if语句或其他构造来实现

所以你的代码变成了

    int userID;
    Int32.TryParse(request.userID, out userID);
    userID = userID > 0 ? user = DuoUser.LoadUser(userID): 0;

三元运算符测试一个条件。它比较两个值。它生成第三个值,该值取决于比较结果。这可以通过if语句或其他构造来实现

所以你的代码变成了

    int userID;
    Int32.TryParse(request.userID, out userID);
    userID = userID > 0 ? user = DuoUser.LoadUser(userID): 0;

您必须将值分配给某个对象,例如:
user=userID>0?加载用户(userID):
语句类似于
variable-if-then-else
您必须将值分配给某个对象,例如:
user=userID>0?加载用户(userID):
语句类似于
variable-if-then-else
您的意思不是
user=userID>0吗?LoadUser(userID):null?是的-我发现了,并且已经纠正了。我的编辑和你的评论一定是在同一时间到达的。BTW:关于三元运算符有没有一个共同的意见,就干净代码,代码可读性和代码重构?@ FaluxEnter方式回来时,我在学习C++(20年前)的共识似乎只是“不要使用它们”。我想有些人仍然有这种感觉,但当它有助于可读性时,我会使用它们。有时,
if
构造似乎太庞大,而如果表达式简单且可以容纳一行而无需水平滚动,则三元操作更有意义。你不是说
user=userID>0吗?LoadUser(userID):null?是的-我发现了,并且已经纠正了。我的编辑和你的评论一定是在同一时间到达的。BTW:关于三元运算符有没有一个共同的意见,就干净代码,代码可读性和代码重构?@ FaluxEnter方式回来时,我在学习C++(20年前)的共识似乎只是“不要使用它们”。我想有些人仍然有这种感觉,但当它有助于可读性时,我会使用它们。有时候,
if
结构看起来太笨重了,然而,如果表达式很简单并且可以在不进行水平滚动的情况下容纳一行,则三元操作更有意义。结果应分配给
user
not
userID
结果应分配给
user
not
userID
结果应分配给
user
not
userID
结果应分配给
user
而不是
userID