我正在閱讀有關在MSDN https://msdn.microsoft.com/en-us/library/ee372288(v=vs.110).aspx中創建多個前因的延續,並且很難理解代碼,這是他們使用的示例之一。我正在粘貼下面的代碼。TaskFactory.StartNew <TResult>方法(Func <Object,TResult>,Object)
for (int ctr = 1; ctr <= 10; ctr++) {
int baseValue = ctr;
tasks.Add(Task.Factory.StartNew((b) =>
{
int i = (int) b;
return i * i;
},
baseValue));
}
當我讀到StartNew
過載時,MSDN states:
public Task<TResult> StartNew<TResult>(
Func<object, TResult> function,
object state
)
參數
功能
類型:System.Func<Object, TResult>
一個函數委託,通過Task<TResult>
返回未來結果。
狀態
類型:System.Object
由函數代表可以使用包含數據的對象。
具體而言,在他們的示例中,我不瞭解baseValue
的用法,b
作爲Object
傳遞給該函數。
'baseValue'是傳遞給提供給'StartNew'的委託的狀態對象。在這個例子中,baseValue將在循環執行時取值爲'ctr'。 [在另一張紙上遠離'StartNew'](https://blog.stephencleary.com/2013/08/startnew-is-dangerous.html) – JSteward
b是什麼? –
b是傳遞給lamda的參數,它大致相當於'void SomeFunc(int b)'。 – JSteward