[英]Is a class with static members and a public constructor a static class?
如果我有一个未标记为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>
被垃圾回收,只要该变量被认为是“活动的”即可-这将取决于它是什么类型的变量以及如何使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.