簡體   English   中英

這段代碼中的=>運算符是什么

[英]What is => operator in this code

我使用ThreadPool與下面的代碼: -

ThreadPool.QueueUserWorkItem
                (o =>
                MyFunction()
                );

我不確定o=>在這段代碼中做了什么。 誰能幫我嗎。

它描述了一個lambda(匿名)函數。 在這種情況下,它是一個函數,它接受一個參數o,然后執行MyFunction(盡管在這種情況下它基本上拋棄了o的值)。 它相當於:

void Foo(object o) //We know that Foo takes an object and returns void because QueueUserWorkItem expects an instance of type WaitCallback which is a delegate that takes and object and returns void
{
  MyFunction();
}

ThreadPool.QueueUserWorkItem(Foo) // or ThreadPool.QueueUserWorkItem(new WaitCallback(Foo));

根據QueueUserWorkItem期望的任何內容推斷o的類型。 QueueUserWorkItem需要類型WaitCallback,因此在這種情況下,o應該是object類型,因為WaitCallback是具有一個返回void類型的參數的方法的委托。

至於這個特定代碼片段的含義 ; 你基本上是將一個函數(工作項)添加到一個隊列中,該隊列將由池中的一個線程執行(當它變為可用時)。 這個特定的代碼片段只是描述了一種很好的,簡潔的傳遞函數的方式,而不必經歷完全定義類方法的麻煩。

順便說一下,我和其他人傾向於將=>讀為'這樣'。 有些人將其視為“去”。

這是lambda表達式的C#語法。

它在很多方面都是內聯委托定義。 它可以節省您定義用作委托目標的額外函數的繁瑣程度。

private object Target(object state) {
  MyFunction();
}

...
ThreadPool.QueueUserWorkItem(new WaitCallback(Target));

它正在聲明一種匿名方法。 基本上,你傳遞的是一個身體為{ MyFunction(); } { MyFunction(); }作為QueueUserWorkItem方法的參數。 我沒有檢查過,但它也應該相當於:

ThreadPool.QueueUserWorkItem(MyFunction);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM