c#三元运算符

c# Ternary operator

我正在开发一个没有文档的应用程序(尽管代码非常清晰且写得很好),我正在尝试为下一个在我之后出现的人编写一些有用的技术文档精神病院。

在网络服务方法中,如果调用网络服务returns出错,那么Catch代码运行以增加重试次数消息并将 MessageStatus 设置为 "New"(以便在小于 5 时重试)或 "Error"(对于未知错误),但有一行我不完全确定,我需要正确记录此过程:

catch (Exception ex)
{
int NoRetries = (int)dRow[(int)Common.OutboundSQLFields.Message_Retries];
string messageStatus = (NoRetries < 5) ? Common.MessageStatus(ex) : "Expired";
    ...

这是否意味着如果NoRetries大于4,那么MessageStatus将被设置为Expired,否则将调用方法 Common.MessageStatus 以根据 (ex) ?[=14 的值重置字符串 MessageStatus =]

因此,为了使其更具自我描述性,我可以将三元运算符代码重写为:

string MessageStatus="";
If (NoRetries > 4)
    {
    MessageStatus = "Expired";
    }
else
    {
    MessageStatus = Common.MessageStatus(ex);
    }

(Statement) ? TRUE : FALSE

所以如果 NoRetries < 5 那么 Common.MessageStatus(ex) 如果 NoRetries >= 5 那么 "Expired"

希望这能说明问题:)

如语句所示:

string messageStatus = (NoRetries < 5) ? Common.MessageStatus(ex) : "Expired";

应该是这样的:

string MessageStatus="";
if (NoRetries < 5)
    MessageStatus = Common.MessageStatus(ex);
else
    MessageStatus = "Expired";

你居然反了。不过你的也是对的。