【C#】C# in deep 委托的发展
2021-03-29 14:25
标签:灵活 findall method 技术 发展 lam 简单 void 引用 "用事件去处理程序, 进而解决问题" ---- 委托的目的 委托早在C#2的时候就已经初具模型, 但是并不是特别灵活, 制止C#3才在代码中被广泛使用. C#4中泛型委托, C#5中的异步委托, 委托的使用越来越灵活, 也越来越成为一个C#开发人员必备的技术. 委托有很多耳熟能详的使用之处, 匿名方法, lambda表达式, 他们都是委托的一种. 在研读C# in deep时候, 有一节讲的是在匿名函数中捕获变量, 单看这个节的名字就给我整的云里雾里的. 在这个节最开始讲了一个闭包的概念, 我理解的就是, 匿名函数可以使用声明这个匿名函数的函数内部定义的局部变量 所谓在委托中捕获变量的目的就是方便不用重新声明更多的变量, 直接使用会使代码书写的更加优雅简单.看一下下面这个例子. 有一个Person的List, 需要返回age小于一个limit的新的list, 代码可以如下: 这里有个小tip关于捕获变量的生命周期: 对于一个捕获变量, 只要委托还在引用, 则会一直存在. 在以下情况下, 考虑是否有使用捕获变量的必要: 1. 使用和不使用代码都同样简单. 那么不推荐使用 2. 捕获由for或者foreach语句声明的变量, 要慎用 【C#】C# in deep 委托的发展 标签:灵活 findall method 技术 发展 lam 简单 void 引用 原文地址:https://www.cnblogs.com/it-dennis/p/9156832.htmldelegate void TestEnClosing();
static void EnclosingTest()
{
int a = 5;
Console.WriteLine("before delegate method, a‘s value is : {0}", a);
TestEnClosing x = delegate () { a = 3; Console.WriteLine("delegate method a‘s value: {0}", a); };
x();
Console.WriteLine("after delegate method, a‘s value is : {0}", a);
}
static List
文章标题:【C#】C# in deep 委托的发展
文章链接:http://soscw.com/index.php/essay/69552.html