有一個動作的委託,並試圖使用三元運算它裏面有lambda表達式:Action裏面<T>三元操作符不工作
Action<string> action = new Action<string>(str => (str == null) ?
Console.WriteLine("isnull") : Console.WriteLine("isnotnull")
給人的老「只有分配,遞減等入內」的錯誤。
這是可能以某種方式?
有一個動作的委託,並試圖使用三元運算它裏面有lambda表達式:Action裏面<T>三元操作符不工作
Action<string> action = new Action<string>(str => (str == null) ?
Console.WriteLine("isnull") : Console.WriteLine("isnotnull")
給人的老「只有分配,遞減等入內」的錯誤。
這是可能以某種方式?
你將不得不做這樣的:
var action = new Action<string>(str => Console.WriteLine((str == null) ? "isnull" : "isnotnull"));
Action<string> action = new Action<string>(str =>
{
if (str == null)
Console.WriteLine("isnull");
else
Console.WriteLine("isnotnull");
});
我相信三元操作員返回的東西。在你的情況下,它不會返回任何東西,只是執行一個語句。正如Reddog所說,你必須把你的三元組放在Console.WriteLine調用中,這實際上代碼更少:)
問題不在於lambda,而在於三元運算符中的第二個和第三個表達式必須返回一些東西。 Console.WriteLine
有void
返回類型,因爲您正在嘗試使用而無法使用。解決的辦法是,將通話中三元運營商Console.WriteLine
:
Console.WriteLine(str == null ? "isnull" : "isnotnull")
您可以在拉姆達使用此表達式。
非常感謝! – 2011-05-20 23:40:04