理解C#中靜態Static與單例Singleton
理解靜態Static關鍵字
與其他語言不通,C#沒有全域性變數和全域性函式的感念,C#的所有欄位和方法都出現在一個類的上下文中,在C#中與全域性欄位或函式等價的就是靜態欄位或方
法。“全域性欄位或方法”與“C#的靜態欄位或方法”沒有功能上的差別,只是靜態欄位和靜態方法可以加上“訪問修飾符”如Private,從而可以對訪問進
行限制,提供更好的封裝。
首先來看靜態欄位
直接在類名之後訪問靜態欄位如(ClassName.StaticField)在類的所有例項中都共享靜態欄位的儲存位置,靜態欄位是全域性的。打個比方我
們有一套5元人民幣的模具(最好還是不要有),這個模具就是類,用這個模具印出來的紙幣就是例項,雖然這些紙幣基本相同,但是他的編號肯定不同,(如果編
號相同,基本可以肯定是假幣,假幣的製造模具和真幣的模具是兩個不同的類)。每張紙幣(例項)的編號就可以理解是模具(類)中的靜態欄位,因為
Static決定了它所修飾的欄位是全域性的。靜態欄位屬於類本身,而不屬於類構造出的例項。
靜態方法
直接在類名之後訪問靜態方法如(ClassName.StaticMethod)當然這種訪問方式不需要一個例項,由於靜態方法不是通過一個具體的例項訪問的,所以在靜態方法內使用this是無效的。
靜態構造器
靜態構造器設計為對類(不是類例項)進行初始化的一種方式。在執行時訪問類時自動呼叫靜態構造器。
例如
Class Emp
{
static Emp
{
ID= Rand(1,100);
}
public static int ID = 112;
}
我們在首次使用Emp.ID時,ID的值是不是112,而是1到100的隨機數。
靜態類
如果一個類中僅有方法,沒有例項欄位,那我們就沒有必要使用這個類的例項,這種類最好設計為靜態類。所以靜態類不能被例項化。既然我們不想要這個類的實
例,這個靜態類的內部也不應該有例項欄位或方法。而且靜態類不能被擴充套件。在C#1.0中不能宣告靜態類,是通過私有構造器實現的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-628367/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- static靜態變數的理解變數
- c#靜態類static class示例C#
- java static 與 static靜態程式碼塊Java
- PHP 中 static 靜態屬性和靜態方法的呼叫PHP
- PHP類的靜態(static)方法和靜態(static)變數PHP變數
- C# 靜態成員與例項成員C#
- 深入理解 JavaScript 單例模式 (Singleton Pattern)JavaScript單例模式
- 單例(singleTon)單例
- java中static使用之靜態方法注意點Java
- static靜態方法的使用
- 理解靜態區域性變數(static)在程式中的執行規則變數
- 單例模式 singleton單例模式
- 單例模式--SingleTon單例模式
- 單例模式(Singleton)單例模式
- 單例模式(Singleton Pattern)單例模式
- Scala 與設計模式(一):Singleton 單例模式設計模式單例
- 理解靜態繫結與動態繫結
- 靜態代理、動態代理與Mybatis的理解MyBatis
- 函式的靜態變數 static函式變數
- python3中的單例模式SingletonPython單例模式
- static 靜態變數引起 Laravel 中佇列一個 Bug變數Laravel佇列
- Singleton 單例設計模式單例設計模式
- Singleton——單例模式(8種)單例模式
- laravel singleton 單例模式使用Laravel單例模式
- 手寫koa-static原始碼,深入理解靜態伺服器原理原始碼伺服器
- TypeScript 中 class 的例項成員與靜態成員TypeScript
- 深入理解靜態代理與JDK動態代理JDK
- 單例模式static的困惑單例模式
- Java | 靜態巢狀類(Static Nested Class)Java巢狀
- 靜態化與伺服器渲染(Static vs. Server Rendering)伺服器Server
- C# 靜態類C#
- 封裝動態庫dll與靜態庫lib(原理及簡單例項)封裝單例
- 動態繫結和靜態繫結的簡單理解
- [DELPHI]單例模式(singleton) 陳省單例模式
- 設計模式—singleton(單例模式)設計模式單例
- 設計模式--單例(Singleton Pattern)設計模式單例
- Singleton(單例)——物件建立型模式單例物件模式
- 設計模式 - 單例模式(Singleton)設計模式單例