是具有静态成员的类,而公共构造函数是静态类

本文关键字:构造函数 静态类 静态成员 | 更新日期: 2023-09-27 18:06:26

如果我有一个没有标记为static的类,但它确实有static成员变量,这是否使类本身成为static ?它在代码中使用,但它有一个公共构造函数。我以为他们只能雇私人建筑师?

同样,在网页中的web应用程序中,我调用静态类并将其分配给页面中使用的静态成员变量。如果用户离开页面,静态成员变量是否会保留在内存中?我想的是用户会话的持续时间,对吗?或者GC在较长一段时间内不收集它?

下面是一些代码:

 public class CustomerManager
{
    private static MyFactory _customerFactory = MyFactory.GetInstance();
    public CustomerManager()
    { }
     public static List<CustUser> GetCustomersByWebRequest(int iClientID, string sEmployeeNumber)

在另一个静态类中被调用,如下所示:

 List<CustUser> customers = CustomerManager.GetCustomersByWebRequest(1, "23434");

,这是在生产中。

是具有静态成员的类,而公共构造函数是静态类

不,非静态类包含静态成员是完全合理的。

静态类没有任何实例构造函数。默认情况下,非静态类具有公共实例构造函数,但您可以使用私有实例构造函数来防止"从外部"实例化。

编辑:ASP。.NET用户会话与。NET中的内存管理几乎没有关系,除非某些数据确实存储在他们的会话中——基本上,只是作为对该对象的强引用。

静态变量将防止它所引用的对象在它所属的AppDomain仍然活动时被垃圾收集。

关于customers变量——这只会防止List<CustUser>被垃圾收集,只要变量被认为是"活的"——这将取决于它是什么类型的变量以及它是如何被使用的。