我試圖在C#中啓動一個任務都需要一個參數並返回一個值,但我似乎無法得到正確的語法。如何啓動接受參數並返回值的任務?
下面是我已經接近的:這是一個預計返回int的任務。我在我的拉姆達,我也呈現出它採用單個參數,O:
Task<int> task1 = Task.Factory.StartNew<int>((o) => { return 2 ; }, 3);
Console.WriteLine(task1.Result); // prints 2
以上線路工程(它返回的2硬編碼的值,但你可以看到它在做什麼用的參數Ø ,使其成爲無用的,如果我做了什麼與參數O,這樣的:
Task<int> task1 = Task.Factory.StartNew<int>((o) => { return (2 * o) ; }, 3);
我得到委託「System.Func」不拿1個參數的語法消息
任何幫助如何。從任務中實現這兩件事(傳遞一個參數並檢索一個值)將會很棒!
所以你的意思是避免給lambda指定參數..對吧? 換句話說,而不是(o)=> ..用o表示一個東西,在任務本身之外聲明一個臨時的持有o,然後就用()=> ..做一些事情o –
'任務'類接受一個Func委託,它不接收參數並返回T,或接受並返回對象並返回T.您可能可以使用對象重載,如msdn上所述,但是沒有理由。您在.net中寫入的任何匿名/ lambda委託也可以訪問其定義範圍的變量,如您在我提供的鏈接/ Nicholas Butlers所回答的內容中所見。 Theres不需要你在lambda,yup中指定params。 –
YavgenyP