2013-10-18 216 views
0

創建靜態類的實例據可以聲明爲static的MSDN爲什麼我們不能在.net

,A級,表明它僅包含 靜態成員。這是不可能的創建使用新關鍵字的靜態 類的實例。靜態類由當包含類的程序 或命名空間被加載的.NET Framework公共語言運行時(CLR)自動 加載。

對它做了一些研究之後,我發現靜態類不包含實例構造函數。我不明白爲什麼靜態類不包含實例構造函數以及static關鍵字的用途。爲什麼.Net不允許我們創建一個靜態類的實例?

+8

靜態類的非常定義是,你不能初始化它設置類只有一個實例。你想知道爲什麼存在靜態類嗎?或者該機制如何阻止它們從實例化中運行?類上的'static'只是一個標誌,表示「你不能實例化」。 – CodesInChaos

+1

如果以上情況,請查看http://stackoverflow.com/questions/2227793/why-are-static-classes-used/2227814和http://stackoverflow.com/questions/241339/when-to- use-static-classes-in-c-sharp – Warty

+0

我使用靜態類作爲鏈式編程的靈魂目的,就像使用jQuery一樣。 'MyStaticClass.StaticMethod1.StaticProperty1' – diceler

回答

5

靜態類不包含任何實例成員屬性或函數。所以讓一個實例變得毫無意義。

靜態類用於包含在整個程序中具有相同效果的變量,屬性和函數。

例如,您可以有一個「設置」類。

它具有所有靜態屬性。

當它被訪問時(通過靜態構造函數) 如果找不到該文件,自動從磁盤加載設置文件或重置爲默認設置。

現在

來自全國各地的程序,您可以通過只調用

  • Settings.ScreenSize訪問該類
  • Settings.RootPath

你甚至可以創建一個功能

  • Settings.Save()將設置保存到磁盤供下次使用。
  • Settings.Reset()恢復默認設置。

這樣做的好處是您的所有設置將被分組到一個位置,並且您的設置的所有邏輯都被放置在一個位置。你總是會知道,有無論你叫它

我希望這有助於

+1

靜態類也是在多線程環境中存儲常用信息的簡單方法。 – aikixd

相關問題