我懷疑靜態類可以包含一個私有構造函數。我們可以在靜態類中使用私有構造函數嗎?
回答
靜態類不能有實例構造
http://msdn.microsoft.com/en-us/library/79b3xss3.aspx
下面的列表提供了一個靜態類的主要特點:
- 僅包含靜態成員。
- 無法實例化。
- 密封。
- 不能包含實例構造函數。
靜態類不能有任何實例構造函數(請參閱CS0710),無論是公共,私有,受保護或內部。
有關更多信息,請參閱以下文章。
Static Classes and Static Class Members (C# Programming Guide)
@jonathan:我在Reflector中查看'public static class',但只能找到'private static void .cctor()'靜態構造函數。這個私人實例構造函數在哪裏? – 2010-01-27 09:28:05
什麼會此構造嗎?該類是靜態的,所以它從來沒有實例化。你可以在非靜態類上有一個靜態構造函數來初始化靜態字段,但是在靜態類上,唯一有意義的構造函數是靜態構造函數,並且被稱爲CLR。
加成:Jon Skeet posted an article對靜態類的初始化的時間(通常它的初始化在第一次使用,但有時你想在程序啓動時進行初始化),並在.NET 4 可能變化。
@Jonathan Wow,這很奇怪。我試圖想想如何有用,但他們取而代之,我認爲他們有相同的結論:) – 2010-01-27 09:16:37
@Jonathan告訴CLR一個_static_類不能被實例化爲Real嗎? – 2010-01-27 09:22:09
您的疑問是正確的。
一個靜態類只能有一個靜態構造函數,而public/private不適用,因爲你的代碼永遠不能調用這個構造函數(CLR)。
因此,您不能在靜態構造函數上使用訪問修飾符(public/private/...)。
規則是靜態類不能有實例構造
- 1. 使用私有構造函數和私有靜態方法調用類?
- 2. 我可以在類體中默認一個私有構造函數嗎?
- 3. 我們可以調用一個類的構造函數嗎?
- 4. 在java中,如何使用其父類也有私有構造函數的私有構造函數創建類?
- 5. 我們可以在tclOO中定義靜態函數嗎?
- 6. 我們可以解構任意的數據構造函數嗎?
- 7. 我可以使用boost :: make_shared和一個私有構造函數嗎?
- 8. 使類構造函數私有
- 9. 靜態對象如何調用私有構造函數
- 10. Javascript中的私有構造函數與靜態成員
- 11. 我可以從私有構造函數調用析構函數並使用垃圾回收嗎?
- 12. Java - 構造函數是靜態的嗎?
- 13. 在.NET中,一個類可以有虛擬構造函數嗎?
- 14. 靜態構造函數有用
- 15. 我們可以讓Liferay在私有云中動態擴展嗎?
- 16. 我們可以說再見覆制構造函數嗎?
- 17. 我們可以停止構造函數的運行嗎?
- 18. 我們可以說構造函數創建對象嗎?
- 19. 我可以在外部構造函數中爲參數類型構建一個無參數構造函數嗎?
- 20. 靜態類C#構造函數OOP
- 21. Python靜態類型的構造函數?
- 22. Python類構造函數(靜態)
- 23. 我可以使複製構造函數私有,仍然使用默認實現
- 24. Java - 靜態構造函數
- 25. JsonSerializationException類型與私有構造函數
- 26. 定義私有類的構造函數
- 27. 我們可以在其他類的構造函數中使用其他類的方法嗎?
- 28. 我們可以中斷在構造函數中創建對象
- 29. 如果基類構造函數不是constexpr,我可以構造派生類constexpr的構造函數嗎?
- 30. 可以使用ocamldoc引用類型構造函數嗎?
如果你有Visual Studio的(或類似)的安裝,我的猜測是,它會帶你不到1分鐘來編譯和檢查自己這一點... – 2010-01-27 09:39:44
約翰,這是沒有理由不問這個問題。查看常見問題。 – 2010-01-27 09:47:04