簡體   English   中英

具有靜態成員和公共構造函數的類是否是靜態類?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM