[英]How does compiler knows what is the type of a delegate?
假设我有一个多线程控制台应用程序:
class Program
{
private static void Method()
{
Console.WriteLine("Method() started");
for (var i = 0; i < 20; i++)
{
Console.WriteLine($"Counter = {i}");
Thread.Sleep(500);
}
Console.WriteLine("Method() finished");
}
static void Main(string[] args)
{
Console.WriteLine("Main Started");
var task = new Task(Method);
task.Start();
for (var i = 0; i < 60; i++)
{
Console.Write(".");
Thread.Sleep(100);
}
Console.WriteLine("Main finished");
Console.ReadLine();
}
}
我的问题是编译器如何知道在哪个委托中使用.. = new Task(..)? 我的意思是编译器如何替换此笔划
var task = new Task(Method);
有了这个
var action = new Action(Method);
var task = new Task(action);
Action的构造函数接受void方法
new Action(someVoidMethod);
编译器实际生成了这段代码:
Task task = new Task(new Action(Program.Method));
由于传递的void方法没有参数,因此编译器可以将其转换为Action
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.