我到底需要什么代理和线程?
代表充当函数指针的逻辑(但安全)等价物; 它们允许您以抽象的方式讨论操作.典型的例子是事件,但我将使用更多"函数式编程"示例:在列表中搜索:
Listpeople = ... Person fred = people.Find( x => x.Name == "Fred"); Console.WriteLine(fred.Id);
这里的"lambda"本质上是一个委托的实例 - 一个类型的委托Predicate
- 即"给定一个人,是真是假".使用委托允许非常灵活的代码 - 即该List
方法可以根据调用者传入的委托找到各种各样的东西.
通过这种方式,它们在很大程度上像一个方法界面 - 但更简洁.
代表:基本上,委托是引用方法的方法.它就像一个指向方法的指针,您可以将其设置为与其签名匹配的不同方法,并使用它将引用传递给该方法.
线程是一个连续的指令流,它们一个接一个地执行以完成计算.您可以同时运行不同的线程来完成特定任务.线程在单个逻辑处理器上运行.