繁体   English   中英

函数内部的if语句

[英]if-statement inside function

我有这段代码:

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吗? (我对lambda的整个概念都是新手)

您可以使用条件运算符

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

有一个叫做?:的运算符。 您可以这样使用它:

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

暂无
暂无

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

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