这段代码中的=>运算符是什么

Zee*_*mar 6 c# operators

我使用ThreadPool与下面的代码: -

ThreadPool.QueueUserWorkItem
                (o =>
                MyFunction()
                );
Run Code Online (Sandbox Code Playgroud)

我不确定o=>这段代码有什么作用.谁能帮我吗.

Rod*_*man 11

它描述了一个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));
Run Code Online (Sandbox Code Playgroud)

根据QueueUserWorkItem期望的任何内容推断o的类型.QueueUserWorkItem需要类型WaitCallback,因此在这种情况下,o应该是object类型,因为WaitCallback是具有一个返回void类型的参数的方法的委托.

至于这个特定代码片段的含义 ; 你基本上是将一个函数(工作项)添加到一个队列中,该队列将由池中的一个线程执行(当它变为可用时).这个特定的代码片段只是描述了一种很好的,简洁的传递函数的方式,而不必经历完全定义类方法的麻烦.

顺便说一下,我和其他人倾向于将=>读为'这样'.有些人将其视为"去".