如果我有这个代码:

Label label1 = new Label();
Form1.Controls.Add(label1);
Label label2 = label1;

From1上到底有什么?是label1吗?还是 label1 指向的对象?

换句话说,如果我有这个:
Form1.Controls.Remove(label1);
我是否有效地去除了标签?还是 label2 将其保留在表单上?

我想我想知道,它是表单上的指针,还是指针指向的对象?

最佳答案

Controls.Add() 添加对您传递给它的任何 Control 的引用。 label2 = label1 只是创建另一个对 label1 的引用。 Controls.Remove() 不会删除该对象,它只是将其从其控件列表中删除。

因此,在您的示例中,在您调用 Controls.Remove() 之后:

  • label1 仍然“存在”(即它不会被垃圾收集)。
  • label2 将引用 label1。
  • 标签将不再是表单的一部分,因为表单的控件列表不再包含对标签的引用。
  • 关于c# - 表格上的内容是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8811384/

    10-10 13:45