首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

匿名方法跟lambda表达式,算是静态方法还是成员方法呢

2014-01-22 
匿名方法和lambda表达式,算是静态方法还是成员方法呢?主要是关心内存泄漏问题比如这段代码public partial

匿名方法和lambda表达式,算是静态方法还是成员方法呢?
主要是关心内存泄漏问题
比如这段代码


    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            PublicFunc.Add = (i, i1) => i + i1;
            PublicFunc.AddHeight = i => i + Height;
        }
    }

    public class PublicFunc
    {
        public static Func<int, int, int> Add;
        public static Func<int, int> AddHeight;
    }


当Form1被关闭后,能够被垃圾回收吗?如果只有Add方法而没有AddHeight方法呢(也就是如果表达式中没用到this.xxx)?  如果不能被垃圾回收,有办法解决吗
[解决办法]
说实话,这个问题我不知道答案,但是我知道如何去验证。

为你的Form1 加一个析构函数,然后下个断点或者输出点日志。

打开form1,然后关闭。

之后多调用几次GC,或者进行一些其它操作,看看Form1是否会进行析构。
[解决办法]
我的直观感觉是不会泄露,因为匿名方法本身是个局部变量。

匿名方法应该是和下面的ob对象是一样的。


private void Func(A a)
{
object ob = new object();

a.obj = ob;
}

热点排行