关于闭包的解释如下:
闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义。
可以将C#中的闭包理解为存在于运行环境中的自由变量,在该闭包作用域内可以任意修改该变量,另外,它亦会被隐藏,如以下面的代码为例:
- public class TCloser{
- public Func<int> T1()
- {
- var n =999;
- Func<int>result = () =>
- {
- return n;
- };
- n =10;
- return result;
- }
- public dynamic T2()
- {
- var n =999;
- dynamic result =new {A = n };
- n = 10;
- return result;
- }
- static void Main(){
- var a =new TCloser();
- var b =a.T1(); //b值为10
- var c =a.T2(); //c值为999
- Console.WriteLine(b());
- Console.WriteLine(c.A);
- }
- }