c#三元运营商

时间:2015-02-26 12:32:38

标签: c# if-statement error-handling ternary-operator

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

在Web服务方法中,如果对Web服务的调用返回错误,则运行 Catch 代码以增加消息的重试次数,并将MessageStatus设置为“New” “(如果小于5则重试)或”错误“(对于未知错误),但有一行我不完全确定,我需要正确记录这个过程:

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

这是否意味着如果NoRetries大于4,则 MessageStatus 将设置为过期,否则方法 Common。将调用MessageStatus 以根据(ex)的值重置字符串 MessageStatus

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

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

2 个答案:

答案 0 :(得分:4)

(Statement) ? TRUE : FALSE

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

希望这澄清一下:)

答案 1 :(得分:1)

声明如下:

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

应该是这样的:

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

你实际上扭转了它。但你的也是正确的。