您好,登錄后才能下訂單哦!
C#中靜態類和靜態類成員的區別是什么,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
C#靜態類和靜態類成員用于創建無需創建類的實例就能夠訪問的數據和函數。靜態類成員可用于分離獨立于任何對象標識的數據和行為:無論對象發生什么更改,這些數據和函數都不會隨之變化。當類中沒有依賴對象標識的數據或行為時,就可以使用靜態類。
讓我們來看看靜態類:
類可以聲明為static的,以指示它僅包含靜態成員。不能使用 new 關鍵字創建靜態類的實例。靜態類在加載包含該類的程序或命名空間時由 .NET Framework 公共語言運行庫 (CLR) 自動加載。
使用靜態類來包含不與特定對象關聯的方法。例如,創建一組不操作實例數據并且不與代碼中的特定對象關聯的方法是很常見的要求。您應該使用靜態類來包含那些方法。
靜態類的主要功能如下:
1、它們僅包含靜態成員。
2、它們不能被實例化。
3、它們是密封的。
4、它們不能包含實例構造函數(C# 編程指南)。
因此創建靜態類與創建僅包含靜態成員和私有構造函數的類大致一樣。私有構造函數阻止類被實例化。
使用靜態類的優點在于,編譯器能夠執行檢查以確保不致偶然地添加實例成員。編譯器將保證不會創建此類的實利。
靜態類是密封的,因此不可被繼承。靜態類不能包含構造函數,但仍可聲明靜態構造函數以分配初始值或設置某個靜態狀態。
何時使用靜態類
假設有一個類 CompanyInfo,它包含用于獲取有關公司名稱和地址信息的下列方法。
class CompanyInfo { public string GetCompanyName() { return "CompanyName"; } public string GetCompanyAddress() { return "CompanyAddress"; } //... }
不需要將這些方法附加到該類的具體實例。因此,您可以將它聲明為靜態類,而不是創建此類的不必要實例,如下所示:
static class CompanyInfo { public static string GetCompanyName() { return "CompanyName"; } public static string GetCompanyAddress() { return "CompanyAddress"; } //... }
使用靜態類作為不與特定對象關聯的方法的組織單元。此外,靜態類能夠使您的實現更簡單、迅速,因為您不必創建對象就能調用其方法。以一種有意義的方式組織類內部的方法(例如 System 命名空間中的 Math 類的方法)是很有用的。靜態成員
即使沒有創建類的實例,也可以調用該類中的靜態方法、字段、屬性或事件。如果創建了該類的任何實例,不能使用實例來訪問靜態成員。只存在靜態字段和事件的一個副本,靜態方法和屬性只能訪問靜態字段和靜態事件。靜態成員通常用于表示不會隨對象狀態而變化的數據或計算;例如,數學庫可能包含用于計算正弦和余弦的靜態方法。
在成員的返回類型之前使用 static 關鍵字來聲明靜態類成員,例如:
public class Automobile { public static int NumberOfWheels = 4; public static int SizeOfGasTank { get { return 15; } } public static void Drive() { } public static event EventType RunOutOfGas; //other non-static fields and properties... }
靜態成員在***次被訪問之前并且在任何靜態構造函數(如調用的話)之前初始化。若要訪問靜態類成員,應使用類名而不是變量名來指定該成員的位置。例如:
Automobile.Drive(); int i = Automobile.NumberOfWheels;
看完上述內容,你們掌握C#中靜態類和靜態類成員的區別是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。