天天看點

C#中static靜态變量的用法

使用 static 修飾符聲明屬于類型本身而不是屬于特定對象的靜态成員static修飾符可用于類、字段、方法、屬性、運算符、事件和構造函數,但不能用于索引器、析構函數或類以外的類型

靜态全局變量

定義:在全局變量前,加上關鍵字 static 該變量就被定義成為了一個靜态全局變量。

特點:   A、該變量在全局資料區配置設定記憶體。   B、初始化:如果不顯式初始化,那麼将被隐式初始化為0。

靜态局部變量

定義:在局部變量前加上static關鍵字時,就定義了靜态局部變量。

特點:   A、該變量在全局資料區配置設定記憶體。   B、初始化:如果不顯式初始化,那麼将被隐式初始化為0。   C、它始終駐留在全局資料區,直到程式運作結束。但其作用域為局部作用域,當定義它的函數或 語句塊結束時,其作用域随之結束。

靜态資料成員

特點:   A、記憶體配置設定:在程式的全局資料區配置設定。   B、初始化和定義:     a、靜态資料成員定義時要配置設定空間,是以不能在類聲明中定義。     b、為了避免在多個使用該類的源檔案中,對其重複定義,所在,不能在類的頭檔案中     定義。     c、靜态資料成員因為程式一開始運作就必需存在,是以其初始化的最佳位置在類的内部實作。   C、特點     a、對相于 public,protected,private 關鍵字的影響它和普通資料成員一樣,     b、因為其空間在全局資料區配置設定,屬于所有本類的對象共享,是以,它不屬于特定的類對象,在沒産生類對象時其作用域就可見,即在沒有産生類的執行個體時,我們就可以操作它。

  D、通路形式     a、 類對象名.靜态資料成員名

        E、靜态資料成員,主要用在類的所有執行個體都擁有的屬性上。比如,對于一個存款類,帳号相對   于每個執行個體都是不同的,但每個執行個體的利息是相同的。是以,應該把利息設為存款類的靜态資料成員。這有兩個好處,第一,不管定義多少個存款類對象,利息資料成員都共享配置設定在全局區的記憶體,是以節省存貯空間。第二,一旦利息需要改變時,隻要改變一次,則所有存款類對象的利息全改變過來了,因為它們實際上是共用一個東西。  

靜态成員函數

特點:   A、靜态成員函數與類相聯系,不與類的對象相聯系。   B、靜态成員函數不能通路非靜态資料成員。原因很簡單,非靜态資料成員屬于特定的類執行個體。

作用:   主要用于對靜态資料成員的操作。

調用形式:   A、類對象名.靜态成員函數名()

static靜态變量的執行個體與分析

 執行個體:

C# 代碼   複制

C#中static靜态變量的用法
C#中static靜态變量的用法
C#中static靜态變量的用法

現在分析上面的代碼:

Console.WriteLine(string.Format("i={0}",i)); 這裡i是static變量,而且類class1是第一次被引 用,要先為class1裡面所有的static變量配置設定記憶體。盡管現在有超線程技術,但是指令在邏輯還是一條一條的按順序執行的,是以 先為static int i配置設定記憶體,并且在該記憶體中保持int的預設值0,接着再為static int num 變量配置設定記憶體,值當然也為0。

然後執行第二步,為變量指派:先為static int i變量指派,i=getNum(),看getNum裡面的代碼,就是return num,這個時候num的值是0,于是i就為0了。然後對變量num指派,num=1;這行代碼執行後,num就為1了。

是以最後的結果為:

 i=0 j=1