非静态类中的静态方法的寿命是多少?

时间:2018-08-09 10:59:56

标签: c# .net garbage-collection

我有一个低于工厂的UI类,它负责为我的视图创建控件。我想知道从静态CreateUI方法创建的这些控件的寿命是多少。

public class UIFactory
{
  public static Control CreateUI (string ControlType)
   { 
     if ControlType == "Date"
      return new dateControl();
   }
}

谢谢

2 个答案:

答案 0 :(得分:3)

方法没有生命周期。他们在那里。总是。

(关于延迟加载程序集和即时编译可能会有更复杂的解释,但是对于垃圾收集器而言,它们无关紧要。方法存在。它们没有生命。他们永远不会被移除。)

所有实例都具有相同的生存期:直到对它们的最后一个引用超出范围,并且垃圾回收器将其删除。

谁创建实例都没有关系。只有谁拥有它的引用才重要。您的方法不会保留对已创建实例的引用,因此调用方将决定生存期(通过唯一引用该实例,直到调用方可以访问其他人)。

答案 1 :(得分:0)

以这种方式创建的对象的生存期将与通过非静态方法创建的对象的生存期完全相同。就这么简单。