0

ボタンコントロールをオンにしたシンプルなフォームがあります。クリックすると、チェックボックスが表示されます。

私は初心者で、参照変数 myCheckbox がどうなるか、イベント Handler が有効期間を過ぎたときにヒープ上で指しているチェックボックス オブジェクトがどうなるかを知りたいと思っていました。

ヒープにチェックボックス オブジェクトが存在する場合、別の参照を指定してアクセスできますか?

ありがとうございました

リー

私のコード -

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 に答える