[英]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.