if-statement里面的函数

时间:2014-07-03 07:52:53

标签: c# if-statement lambda

我有这段代码:

public static void Debug(string workName, string message, string logcontext, string exMessage = "")
{
    LogEventInfo logEvent = new LogEventInfo(LogLevel.Debug, logcontext, message + ": " + exMessage);
    ...
}

如您所见,Debug方法的最后一个参数是可选的(string exMessage = "")。这意味着如果我按原样运行此代码,如果exMessage到达它将会很好:"...message: exMessage"

但是,如果未提供exMessage,它将如下所示:"...message: "(请注意尾随:)。

当然,使用类似的东西可以很容易地解决这个问题:

if(!String.IsNullOrEmpty(exMessage)
{
    ...(...,message + ": " + exMessage);
}
else
{
    ...(...,message);
} 

我想要一个更漂亮的方法。就像是否有以下内容:

...(...(!exMessage -> ,message | else -> ,message + ": " + exMessage));

有没有办法在C#中使用这个内联if语句?我可以用lambdas怎么样? (我对lambdas的整个概念都是超级新手)

3 个答案:

答案 0 :(得分:2)

您可以使用conditional operator

 exMessage == "" ? message : message + ": " + exMessage

答案 1 :(得分:2)

有一个名为?:的运营商。你这样使用它:

var logText = string.IsNullOrEmpty(exMessage) ? message : message + ": " + exMessage;

答案 2 :(得分:2)

LogEventInfo logEvent = new LogEventInfo(LogLevel.Debug, logcontext, message + (!string.IsNullOrEmpty(exMessage) ? ": " : string.Empty) + exMessage);