0

我有一个带有按钮控件的简单表单。单击时,会出现一个选中的复选框。

我是一个初学者,想知道当事件处理程序超出其生命周期时,我的引用变量 myCheckbox 会发生什么以及它在堆上指向的复选框对象会发生什么?

如果堆上的复选框对象仍然存在,我可以通过指向另一个引用来访问它吗?

谢谢你

我的代码 -

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            CheckBox myCheckbox = new CheckBox();
            myCheckbox.Name = "My Check Box";
            myCheckbox.Checked = true;
            myCheckbox.Location = new Point(500, 150);
            this.Controls.Add(myCheckbox);
        }
    }
}
4

1 回答 1

1

引用的对象由集合checkBox维护Controls,这与事件处理程序的生命周期无关——实际上事件处理程序没有“生命周期”——它是一种正常的方法,当您单击按钮时会触发。

mycheckBox另一方面被破坏,因为它是一个局部变量。

但是,是的,您可以CheckBox稍后像这样引用该对象:

var checkBox = this.Controls[index] as CheckBox

如果CheckBox从集合中删除并且不再引用,则它有资格进行垃圾回收。

于 2013-08-12T13:57:50.870 回答