成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

靜態變量與非靜態變量的區別

開發 后端
靜態變量的類型說明符是static,非靜態變量反而類型說明符就不是static了。本文主要介紹靜態和非靜態變量的區別,希望對你有幫助,一起來看。

靜態變量:靜態變量使用 static 修飾符進行聲明在所屬類被裝載時創建通過類進行訪問所屬類的所有實例的同一靜態變量都是同一個值非靜態變量:不帶有 static 修飾符聲明的變量稱做非靜態變量在類被實例化時創建通過對象進行訪問同一個類的不同實例的同一非靜態變量可以是不同的值。

對于自動變量,它屬于動態存儲方式。但是也可以用static定義它為靜態自動變量,或稱靜態局部變量,從而成為靜態存儲方式。由此看來,一個變量可由static進行再說明,并改變其原有的存儲方式。

下面介紹靜態變量與非靜態變量的區別如下:

1.內存分配

靜態變量在應用程序初始化時,就存在于內存當中,直到它所在的類的程序運行結束時才消亡;而非靜態變量需要被實例化后才會分配內存。

2.生存周期

靜態變量生存周期為應用程序的存在周期;非靜態變量的存在周期取決于實例化的類的存在周期。

3.調用方式

靜態變量只能通過“類.靜態變量名”調用,類的實例不能調用;非靜態變量當該變量所在的類被實例化后,可通過實例化的類名直接訪問。

4.共享方式

靜態變量是全局變量,被所有類的實例對象共享,即一個實例的改變了靜態變量的值,其他同類的實例讀到的就是變化后的值;
非靜態變量是局部變量,不共享的。

5.訪問方式

靜態成員不能訪問非靜態成員;非靜態成員可以訪問靜態成員。

靜態變量在類裝載的時候分配內存,以后創建的對象都使用的該內存,相應的操作也就是對這塊內存進行操作。也可以看作是另類的全局變量。

在WebSerivice中想只進行一次初始化,而不用每次都進行初始化這樣占用大量資源。還可以對調用的服務進行管理,比如想把每次調用的服務進行排隊執行,可以將想應信息放到Arraylist中,靜態時鐘中排隊執行。

C#靜態構造函數及靜態變量

靜態構造函數:

(1)用于對靜態字段、只讀字段等的初始化。              

(2)添加static關鍵字,不能添加訪問修飾符,因為靜態構造函數都是私有的。        

(3)類的靜態構造函數在給定應用程序域中至多執行一次:只有創建類的實例或者引用類的任何靜態成員才激發靜態構造函數

(4)靜態構造函數是不可繼承的,而且不能被直接調用。            

(5)如果類中包含用來開始執行的 Main 方法,則該類的靜態構造函數將在調用 Main 方法之前執行。    

(6)任何帶有初始值設定項的靜態字段,則在執行該類的靜態構造函數時,先要按照文本順序執行那些初始值設定項。  

(7)如果沒有編寫靜態構造函數,而這時類中包含帶有初始值設定的靜態字段,那么編譯器會自動生成默認的靜態構造函數。

經典例子:

  1. /*  
  2. * 靜 態 構 造 函 數 練 習  
  3. * (1)①②③……為執行順序  
  4. * (2)輸出結果: static A()  
  5. * static B()  
  6. * X = 1, Y = 2  
  7. */ 
  8. using System;  
  9. class A  
  10. {  
  11. public static int X;  
  12. static A() //④ 執行完后返回到③  
  13. {  
  14. X = B.Y + 1;  
  15. Console.WriteLine("static A()");  
  16. }  
  17. }  
  18. class B  
  19. {  
  20. public static int Y = A.X + 1; //③ 調用了A的靜態成員,  
  21. // 轉到A的靜態構造函數---->  
  22. static B() //② 如果帶有初始值設定項的靜態字段,  
  23. // 執行該類的靜態構造函數時,  
  24. // 先要按照文本順序執行那些初始值設定項。  
  25. // 轉到初始值設定項---->  
  26. {  
  27. Console.WriteLine("static B()");  
  28. }  
  29. static void Main() //① 程序入口,  
  30. // 如果類中包含用來開始執行的 Main 方法,  
  31. // 該類的靜態構造函數將在調用 Main 方法之前執行。  
  32. // 轉到B的靜態構造函數---->  
  33. {  
  34. Console.WriteLine("X = {0}, Y = {1}", A.X, B.Y);//⑤ 輸出結果  
  35. Console.ReadLine();  
  36. }  

關于C#靜態構造函數的幾點說明:

靜態構造函數是C#的一個新特性,其實好像很少用到。不過當我們想初始化一些靜態變量的時候就需要用到它了。這個構造函數是屬于類的,而不是屬于哪里實例的,就是說這個構造函數只會被執行一次。也就是在創建***個實例或引用任何靜態成員之前,由.NET自動調用。

  1. class SimpleClass  
  2. {  
  3. // Static constructor  
  4. static SimpleClass()  
  5. {  
  6. //  
  7. }  

在使用靜態構造函數的時候應該注意幾點:

1、靜態構造函數既沒有訪問修飾符,也沒有參數。因為是.NET調用的,所以像public和private等修飾符就沒有意義了。

2、是在創建***個類實例或任何靜態成員被引用時,.NET將自動調用靜態構造函數來初始化類,也就是說我們無法直接調用靜態構造函數,也就無法控制什么時候執行靜態構造函數了。

3、一個類只能有一個靜態構造函數。

4、無參數的構造函數可以與靜態構造函數共存。盡管參數列表相同,但一個屬于類,一個屬于實例,所以不會沖突。

5、最多只運行一次。

6、靜態構造函數不可以被繼承。

7、如果沒有寫靜態構造函數,而類中包含帶有初始值設定的靜態成員,那么編譯器會自動生成默認的靜態構造函數。

希望通過閱讀本文,能給你帶來幫助。

【編輯推薦】

  1. VB.NET局部靜態變量面面觀
  2. Java中靜態變量的適用場景
  3. PHP self關鍵字指向類靜態變量
  4. C#靜態變量定義及內涵實例解析
  5. ASP.NET線程安全與靜態變量的生命周期淺談
責任編輯:于鐵 來源: 360doc.com
相關推薦

2011-07-11 16:13:01

Java靜態變量實例變量

2023-10-07 15:53:05

C/C++靜態變量內存

2009-08-27 10:44:21

C#靜態變量

2023-12-29 08:27:36

C語言靜態變量開發

2009-10-28 09:47:01

VB.NET局部靜態變

2011-05-26 15:10:15

靜態變量

2009-11-27 15:13:00

PHP靜態變量stat

2023-12-04 09:37:00

C++靜態變量

2009-08-31 10:00:07

C#靜態變量

2009-08-31 09:47:22

C#靜態變量初始化

2009-08-31 10:18:00

C#靜態變量定義C#靜態變量

2009-12-10 13:31:20

PHP self關鍵字

2010-01-13 10:34:23

VB.NET局部靜態變

2009-07-31 17:53:39

ASP.NET線程安全

2009-08-13 10:52:03

C#基礎概念

2011-08-10 17:16:01

Objective-C靜態變量

2021-10-29 09:32:33

springboot 靜態變量項目

2020-12-10 10:11:52

Javastatic關鍵字

2024-03-14 11:27:16

C++變量編程

2021-11-27 11:50:09

C++靜態持續
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线一区二 | 亚洲一区二区三区在线视频 | 久久精品二区亚洲w码 | 国产精品欧美一区二区三区不卡 | 国产网站久久 | 国产99久久精品 | 亚洲一区二区三区免费在线观看 | 亚洲系列第一页 | 在线中文字幕视频 | 成人一区精品 | 国内精品视频 | 久久久久久亚洲精品 | 中文字幕第十一页 | 国产精品久久久久久久久久免费看 | 在线视频第一页 | 色www精品视频在线观看 | 日韩人体视频 | 亚洲国产精品人人爽夜夜爽 | 国产精品免费一区二区三区四区 | 91视视频在线观看入口直接观看 | 一级a性色生活片久久毛片 一级特黄a大片 | 玖玖玖在线 | 国产精品久久久久久久久久免费看 | 欧美精品国产精品 | 成年人黄色一级毛片 | 国产精品成人一区二区 | 综合久久久 | 精品1区 | 亚洲国产精品久久久久 | av免费网站在线观看 | 久久精品国产99国产 | 波多野结衣一区二区 | 中文字幕三区 | 一区二区三区免费 | 成人免费观看网站 | 91久久精品国产 | 毛片免费观看视频 | 国产精品不卡一区 | 日韩免费中文字幕 | 久久成人一区 | 午夜影视网 |