繁体   English   中英

C#速记法这有什么问题?

[英]C# shorthand what is wrong with this?

给出此问题的简写If语句: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;

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

将最后一行更改为:

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;

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

所以你的代码变成

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM