2014-07-03 32 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的答案,因爲他是第一個^^ –