当前位置:  开发笔记 > 编程语言 > 正文

为什么Visual Studio IDE有时会初始化"this.components对象:有时候不会?

如何解决《为什么VisualStudioIDE有时会初始化"this.components对象:有时候不会?》经验,为你挑选了0个好方法。

我最近注意到一些我不理解的Visual Studio Designer(C#)的行为,并且想知道是否有人可以澄清......

我的一些Windows窗体,设计器的第一行生成代码读取;

this.components = new System.ComponentModel.Container();

在这种情况下,dispose方法,在同一个设计器文件中,dispose方法在case"if"条件下放置两个"Dispose"调用,如下所示;

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
            base.Dispose(disposing);
        }
    }

即,除非disposing为true,否则不调用任何内容,AND组件不为null.

在其他一些表单中,缺少设计器生成代码中的第一行.在这些情况下,base.Dispose调用在"if"条件之外......

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

我已经注意到这一点,同时跟踪一个没有关闭的表单的bug,其中this.components为null,但base.Dispose调用是在那个条件内(我怀疑设计师代码已被篡改但这是另一个故事.

什么控制了这种行为?

(项目中的一些早期形式是在VS 2005中创建的,我们现在使用VS 2008 - 线索?)

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有