如何获取或杀死某些类的所有实例?

如何从某个类中获取所有实例或者杀死某个类的所有实例?

例如,我有一个MyClass类,我将m1m2m3三次实例化。

有没有办法获取或杀死所有这些实例?

更多澄清:当我有一个“设置表”类。 当用户单击“设置”按钮时,应用程序将从此类创建实例。 当他再次点击相同的按钮时,它会生成新的实例。 我希望它只显示第一个实例,而不是创建新实例

不是我知道,但你可以在某种集合上构造对象时保存实例,以便以后可以访问所有实例:

 public class MyClass { public static List instances = new List(); public MyClass() { instances.Add(this); } } 

编辑:

将设置类保存为表单的字段,单击按钮时,检查该字段是否为空; 如果是这样,实例化

 public class Form1 : Form { private SettingsClass settings; ... ... private void btnSettings_Click(object sender, EventArgs e) { if (settings == null) { settings = new SettingsClass(); } else { // do nothing, already exists } // use settings object } } 

对于表单示例,您可以将表单作为变量保存在主程序中。 这样,您只有一个设置表单的实例。

 private SettingsForm settingsForm = null; SettingsButton_Click() { if(settingsForm == null) { settingsForm = new SettingsForm(); } settingsForm.Show(); } 

实例化它们时,将它们放入更高范围的通用列表中:

 List myObjects = new List(); 

然后,当您在函数内部创建对象时:

 m1 = new MyClass(); m2 = new MyClass(); m3 = new MyClass(); myObjects.add(m1); myObjects.add(m2); myObjects.add(m3); 

然后,在稍后阶段:

 foreach(MyClass m in myObjects) { m.do_whatever_you_want(); m = null; // SEE EDIT BELOW } 

——–编辑———–正如John Saunders在下面的评论中所讨论的那样,这是不可能的。 我很抱歉。