中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

將不確定變為確定~static被(bei)翻譯成(cheng)靜(jing)態,你是否(fou)贊同

回到目錄

C#中有一(yi)個修飾(shi)符(fu),它(ta)(ta)叫(jiao)static,國人(ren)把它(ta)(ta)叫(jiao)靜(jing)態化(hua)的,它(ta)(ta)可以去修飾(shi)類,方法,屬性,事件等元素。

在(zai)100%的教科(ke)書中(zhong)把(ba)static叫(jiao)做靜(jing)態的,對(dui)于原本就(jiu)很抽象的編程語言來說,無(wu)疑(yi)使它(ta)更加抽象化了,啥(sha)是靜(jing)態,靜(jing)止不動?有點(dian)意思。

先看一個static的應(ying)用場合代碼片斷:

一 靜態類(lei):它在程序初始化時自動被執(zhi)行(xing)

1 public static class ConnectionFactory
2  {...}

二 靜(jing)態(tai)方法和靜(jing)態(tai)屬性:它在類被(bei)第一(yi)(yi)次使用或第一(yi)(yi)次被(bei)實例化時,被(bei)執行

1 public static string Conn=WebConfig.SQLConn;
2 public static DataContext Instance()
3 {...}

三 靜態事件(jian),它與靜態屬性和方法一樣的執行機制(zhi)

1 public static event StartEventHandler Start;

事實(shi)上(shang),以(yi)上(shang)三點是(shi)書本上(shang)經常介紹(shao)的,但我不認為它是(shi)一種學習static的最(zui)好方(fang)式,看一下(xia)我對static的理解:

 它是類(lei)本身(shen)的(de)(de)(de)東西,與(yu)(yu)(yu)實(shi)例(li)(li)(li)無(wu)(wu)關(guan),即類(lei)的(de)(de)(de)屬(shu)性,類(lei)的(de)(de)(de)方法,類(lei)的(de)(de)(de)事件等(deng)等(deng),它與(yu)(yu)(yu)實(shi)例(li)(li)(li)無(wu)(wu)關(guan),也就是實(shi)例(li)(li)(li)A與(yu)(yu)(yu)實(shi)例(li)(li)(li)B,對于public static修飾符下的(de)(de)(de)屬(shu)性,方法,事件是平等(deng)的(de)(de)(de),同(tong)時(shi)也是共(gong)享(xiang)的(de)(de)(de)。

如果在一個(ge)(ge)類型B中(zhong)對StaticA類中(zhong)的(de)靜態(tai)屬性Num賦值(zhi),它(ta)會(hui)對所有類中(zhong)使用Num屬性的(de)位(wei)置進行修改(事實上,在內在中(zhong),它(ta)只是一個(ge)(ge)地址(zhi)),你的(de)代碼可能是這(zhe)樣:

 1     /// <summary>
 2     /// 測試類
 3     /// </summary>
 4     public class StaticA
 5     {
 6         /// <summary>
 7         /// 靜態屬性
 8         /// </summary>
 9         public static string Num = "類的(de)屬性";
10     }

在其它類中,有對(dui)Num屬性的使用(yong):

1  public class A
2     {
3         public string ANum = StaticA.Num;
4     }
5     public class B
6     {
7         public string BNum = StaticA.Num;
8     }

而(er)當我(wo)們在程序的任何一處修改(gai)Num的值時,以上A和B中的實例(li)屬性ANum和BNum也就(jiu)會發生變化了,呵呵。

看一(yi)下,由static實(shi)現的(de)單(dan)件模式(shi)吧(ba)(類只能有一(yi)個(ge)實(shi)例)

 1  public sealed class Singleton
 2     {
 3         // 靜態,易(yi)變(bian)的(de)對象(xiang)
 4         private static volatile Singleton instance = null;
 5         // Lock對象,線程安全所用
 6         private static object syncRoot = new Object();
 7 
 8         private Singleton() { }
 9 
10         public static Singleton Instance
11         {
12             get
13             {
14                 if (instance == null)
15                 {
16                     lock (syncRoot)
17                     {
18                         if (instance == null)
19                             instance = new Singleton();
20                     }
21                 }
22 
23                 return instance;
24             }
25         }
26     }

 

總結一下static的(de)技術要(yao)點:

1 static與具(ju)體(ti)實(shi)例無法,屬性(xing)類本身的東西,而(er)不加static是與當前實(shi)例(new ())有(you)關的個(ge)性(xing)化對(dui)象(xiang)

2 static叫(jiao)它靜態(tai)對象不(bu)如叫(jiao)它全(quan)局對象或類自身(shen)對象

3 static有時可(ke)以提高系統性能,即,在為(wei)對象開(kai)辟一(yi)塊內存(cun)空間

回到目錄

posted @ 2012-06-09 15:25  張占嶺  閱讀(1753)  評論(2)    收藏  舉報