是具有静态成员的类,而公共构造函数是静态类
本文关键字:构造函数 静态类 静态成员 | 更新日期: 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>
被垃圾收集,只要变量被认为是"活的"——这将取决于它是什么类型的变量以及它是如何被使用的。