C#面试的问题:简要地介绍一下什么是C#中的闭包

C#面试的问题:简要地介绍一下什么是C#中的闭包

问题描述:

C#面试的问题:简要地介绍一下什么是C#中的闭包,它和匿名委托以及Lambda表达式的关系是什么?

闭包,说的是匿名函数中可以直接访问所在作用域上下文的变量,反之不行。闭包为匿名函数共享上下文变量提供了一种简便的方式。

概念:内层的函数可以引用包含在它外层的函数的变量,即使外层函数的执行已经终止。但该变量提供的值并非变量创建时的值,而是在父函数范围内的最终值。
优点:使用闭包,我们可以轻松的访问外层函数定义的变量,这在匿名方法中普遍使用。比如有如下场景,在winform应用程序中,我们希望做这么一个效果,当用户关闭窗体时,给用户一个提示框。