2014-07-03 126 views
1

我有这样一段代码:if语句内部功能

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

正如你可以看到,调试方法的最后一个参数是可选的(string exMessage = "")。这意味着,如果我运行此代码,是它的外观罚款,如果一个exMessage到达:"...message: exMessage"

然而,如果没有提供exMessage,它看起来就像这样:"...message: "(注后:)。

当然,这可以很容易地通过使用像这样解决:

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

我希望有一个更漂亮的方法。喜欢如果有线:

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

是否有某种方式在C#中执行此行内if语句?我可以如何使用lambda? (我是超级新lambda表达式的整体概念)

回答

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

真棒!谢谢。 –

2

有其称为?:操作。您可以使用这样的:

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

感谢:d Allthough我接受nsgocev的答案,因为他是第一个^^ –