自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#靜態(tài)類和靜態(tài)類成員詳解

開發(fā) 后端
C#靜態(tài)類和靜態(tài)類成員具體的使用是如何的呢?他們會(huì)起到什么作用呢?那么本文就向你詳細(xì)介紹這方面的內(nèi)容。

C#靜態(tài)類和靜態(tài)類成員用于創(chuàng)建無需創(chuàng)建類的實(shí)例就能夠訪問的數(shù)據(jù)和函數(shù)。靜態(tài)類成員可用于分離獨(dú)立于任何對(duì)象標(biāo)識(shí)的數(shù)據(jù)和行為:無論對(duì)象發(fā)生什么更改,這些數(shù)據(jù)和函數(shù)都不會(huì)隨之變化。當(dāng)類中沒有依賴對(duì)象標(biāo)識(shí)的數(shù)據(jù)或行為時(shí),就可以使用靜態(tài)類。

讓我們來看看靜態(tài)類:

類可以聲明為static的,以指示它僅包含靜態(tài)成員。不能使用 new 關(guān)鍵字創(chuàng)建靜態(tài)類的實(shí)例。靜態(tài)類在加載包含該類的程序或命名空間時(shí)由 .NET Framework 公共語言運(yùn)行庫 (CLR) 自動(dòng)加載。

使用靜態(tài)類來包含不與特定對(duì)象關(guān)聯(lián)的方法。例如,創(chuàng)建一組不操作實(shí)例數(shù)據(jù)并且不與代碼中的特定對(duì)象關(guān)聯(lián)的方法是很常見的要求。您應(yīng)該使用靜態(tài)類來包含那些方法。

靜態(tài)類的主要功能如下:

1、它們僅包含靜態(tài)成員。

2、它們不能被實(shí)例化。

3、它們是密封的。

4、它們不能包含實(shí)例構(gòu)造函數(shù)(C# 編程指南)。

因此創(chuàng)建靜態(tài)類與創(chuàng)建僅包含靜態(tài)成員和私有構(gòu)造函數(shù)的類大致一樣。私有構(gòu)造函數(shù)阻止類被實(shí)例化。

使用靜態(tài)類的優(yōu)點(diǎn)在于,編譯器能夠執(zhí)行檢查以確保不致偶然地添加實(shí)例成員。編譯器將保證不會(huì)創(chuàng)建此類的實(shí)利。

靜態(tài)類是密封的,因此不可被繼承。靜態(tài)類不能包含構(gòu)造函數(shù),但仍可聲明靜態(tài)構(gòu)造函數(shù)以分配初始值或設(shè)置某個(gè)靜態(tài)狀態(tài)。

何時(shí)使用靜態(tài)類

假設(shè)有一個(gè)類 CompanyInfo,它包含用于獲取有關(guān)公司名稱和地址信息的下列方法。

  1. class CompanyInfo  
  2.  
  3. {  
  4.  
  5. public string GetCompanyName() { return "CompanyName"; }  
  6.  
  7. public string GetCompanyAddress() { return "CompanyAddress"; }  
  8.  
  9. //...  
  10.  
  11. }  

不需要將這些方法附加到該類的具體實(shí)例。因此,您可以將它聲明為靜態(tài)類,而不是創(chuàng)建此類的不必要實(shí)例,如下所示:

  1. static class CompanyInfo  
  2.  
  3. {  
  4.  
  5. public static string GetCompanyName() {   
  6. return "CompanyName"; }  
  7.  
  8. public static string GetCompanyAddress() {   
  9. return "CompanyAddress"; }  
  10.  
  11. //...  
  12.  
  13. }  

使用靜態(tài)類作為不與特定對(duì)象關(guān)聯(lián)的方法的組織單元。此外,靜態(tài)類能夠使您的實(shí)現(xiàn)更簡單、迅速,因?yàn)槟槐貏?chuàng)建對(duì)象就能調(diào)用其方法。以一種有意義的方式組織類內(nèi)部的方法(例如 System 命名空間中的 Math 類的方法)是很有用的。靜態(tài)成員

即使沒有創(chuàng)建類的實(shí)例,也可以調(diào)用該類中的靜態(tài)方法、字段、屬性或事件。如果創(chuàng)建了該類的任何實(shí)例,不能使用實(shí)例來訪問靜態(tài)成員。只存在靜態(tài)字段和事件的一個(gè)副本,靜態(tài)方法和屬性只能訪問靜態(tài)字段和靜態(tài)事件。靜態(tài)成員通常用于表示不會(huì)隨對(duì)象狀態(tài)而變化的數(shù)據(jù)或計(jì)算;例如,數(shù)學(xué)庫可能包含用于計(jì)算正弦和余弦的靜態(tài)方法。

在成員的返回類型之前使用 static 關(guān)鍵字來聲明靜態(tài)類成員,例如:

  1. public class Automobile  
  2.  
  3. {  
  4.  
  5. public static int NumberOfWheels = 4;  
  6.  
  7. public static int SizeOfGasTank  
  8.  
  9. {  
  10.  
  11. get 
  12.  
  13. {  
  14.  
  15. return 15;  
  16.  
  17. }  
  18.  
  19. }  
  20.  
  21. public static void Drive() { }  
  22.  
  23. public static event EventType RunOutOfGas;  
  24. //other non-static fields and properties...  
  25.  
  26. }  

靜態(tài)成員在***次被訪問之前并且在任何靜態(tài)構(gòu)造函數(shù)(如調(diào)用的話)之前初始化。若要訪問靜態(tài)類成員,應(yīng)使用類名而不是變量名來指定該成員的位置。例如:

  1. Automobile.Drive();  
  2.  
  3. int i = Automobile.NumberOfWheels; 

C#靜態(tài)類和靜態(tài)類成員的基本內(nèi)容就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C#靜態(tài)類和靜態(tài)類成員有所幫助。

【編輯推薦】

  1. C#靜態(tài)方法概念解析實(shí)例
  2. C#靜態(tài)方法與非靜態(tài)方法的比較
  3. C#靜態(tài)方法應(yīng)用實(shí)例詳解
  4. C#反射概念以及實(shí)例詳解
  5. C#反射命名空間淺析
責(zé)任編輯:仲衡 來源: programbbs.com
相關(guān)推薦

2010-01-18 18:04:28

靜態(tài)成員

2024-02-22 18:07:17

C++靜態(tài)成員代碼

2010-01-19 18:35:12

靜態(tài)成員

2010-02-03 11:01:18

C++類靜態(tài)成員初始化

2009-08-28 12:47:30

C#靜態(tài)方法應(yīng)用

2009-08-31 09:41:05

C#反射靜態(tài)方法開發(fā)

2024-08-26 15:06:20

2010-01-21 14:19:44

C++靜態(tài)成員

2010-01-28 16:42:29

C++靜態(tài)成員

2023-10-07 15:53:05

C/C++靜態(tài)變量內(nèi)存

2010-01-21 14:28:03

C++靜態(tài)成員函數(shù)

2009-09-17 16:34:24

C#組件類

2009-08-28 12:41:49

靜態(tài)方法與非靜態(tài)方法

2009-08-31 09:47:22

C#靜態(tài)變量初始化

2009-07-31 15:37:45

C#靜態(tài)構(gòu)造函數(shù)

2009-08-20 14:28:00

C#靜態(tài)構(gòu)造函數(shù)

2009-07-31 15:44:02

C#靜態(tài)構(gòu)造函數(shù)

2011-05-24 16:58:52

CC++

2010-07-05 09:01:29

UML靜態(tài)模型圖

2010-01-18 17:57:02

靜態(tài)數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)