函数内的if语句

本文关键字:语句 if 函数 | 更新日期: 2023-09-27 18:11:11

我有这段代码:

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语句?我可以怎样使用lambda吗?

函数内的if语句

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

可以使用条件运算符

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

有一个叫做?:操作符。你可以这样使用:

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