a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

.NET中的靜態與非靜態的區別分析

2020-01-24 03:30:44
字體:
來源:轉載
供稿:網友

靜態類 vs 普通類

靜態類與普通類的區別有以下幾點:

1)靜態類無法實例化而普通類可以;

2)靜態類只能從System.Object基類繼承;普通可以繼承其它任何非static和非sealed類,但也只能繼承一個類;

3)靜態類不能繼承接口;普通類可以繼承多個接口;

4)靜態類只能包含靜態成員;普通類可以包含靜態和非靜態成員;

5)靜態類不能作為字段,方法參數和局部變量使用;普通類可以;

靜態類的意義:

可以用靜態類封裝一組不與任何對象相關聯的方法,如Math類,Console類。

 

靜態構造函數 vs 實例構造函數

靜態構造函數與實例構造函數的區別有以下幾點:

1)靜態構造函數屬于類,在第一次用到該類時執行且只執行一次;實例構造函數屬于對象,在每次初始化一個新對象的時候都會執行;

2)靜態構造函數只能定義一次,且不能包含參數;實例構造函數可以定義重載,且可以包含參數;

3)靜態構造函數只能訪問類型的靜態字段;實例構造函數可以訪問類型的靜態和非靜態字段;

4)靜態類不能包含訪問修飾符,默認為private.

靜態構造函數的意義:

設置類型的初始化,例如初始化類型需要的實例對象,為類型的靜態字段賦值等。

 

靜態方法 vs 實例方法

靜態方法與實例方法的區別有以下幾點:

1)靜態方法屬于類,通過類來調用;實例方法屬于對象,通過對象來調用;

2)靜態方法不能訪問類的非靜態成員;

靜態方法的意義:

完成一個與特定對象無關的功能。

 

靜態字段 vs 非靜態字段

靜態字段與非靜態字段的區別:

靜態字段屬于類,通過類來調用;非靜態字段屬于對象,通過對象來調用。

靜態字段的意義:

可以用靜態字段來記錄一些屬于類本身的信息。

 

代碼演示


復制代碼 代碼如下:

public class Test
     {
         public int i = 10;
         public static int j = 20;
         public int k;

         public Test()
         {
             Console.WriteLine("i is a non-static field, its value is {0}", i);
             Console.WriteLine("j is a static field, its value is {0}", j);
         }

         public Test(int k)
         {
             this.k = k;
             Console.WriteLine("i is a non-static field, its value is {0}", i);
             Console.WriteLine("j is a static field, its value is {0}", j);
             Console.WriteLine("k is a non-static field, its value is {0}", k);
         }

         static Test()
         {
             Console.WriteLine("I am a static constructor, I couldn't contain any parameters!");
             Console.WriteLine("I couldn't access to the non-static field i, I can only access to the static field j, the value of j is {0}", j);
         }

         public void Print()
         {
             Console.WriteLine("I am a instance method, I can access both the non-static field and the static field!");
             Console.WriteLine("The value of i is {0} and the value of j is {1}", i, j);
         }

         public static void StaticPrint()
         {
             Console.WriteLine("I am a static method, I couldnt access to the non-static field i,  I can only access to the static field j, the value of j is {0}", j);
         }
     }

運行結果


從運行結果可以看出,在Main方法中創建了兩個Test對象,靜態構造函數只執行了一次,且先于實例構造函數執行,實例構造函數在兩次實例化過程中各執行了一次。同時可以看到我們是通過Test.j來調用的j字段,而i字段和k字段的調用則通過Test的兩個對象t1和t2調用。同樣的,靜態方法StaticPrint也是用Test類來調用,而實例方法Print通過Test類的對象來調用。

Fighting like Allen Iverson! Never never give up!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国内久久 | 国产精品久久久久一区二区三区共 | 一区二区三区四区视频 | 天天干天天搞天天射 | 欧美日韩激情四射 | gogo熟少妇大胆尺寸 | 精品在线播放 | 黄色大片网站在线观看 | 91精品视频国产 | 免费视频一区 | 久久不射电影网 | av在线一区二区三区 | 久久久久国 | 亚洲女人天堂av | 经典三级在线播放 | 国产a√ | 视色视频在线观看 | 永久看片| 日本精品一区二区三区视频 | 国产一区在线视频 | 国产不卡一区二区三区在线观看 | 国产精品久久久久久久久久妞妞 | 欧美成人在线网站 | 久久精品黄色 | 成人在线免费 | 日本福利一区二区 | 久久ri资源网 | 国产精品美女久久久久久久久久久 | 黄色毛片免费看 | 亚洲狠狠 | sese综合 | 视频一区免费观看 | 91在线观看视频 | 一区二区三区四区在线播放 | av一区二区在线观看 | 五月激情综合网 | 日本一区二区在线看 | 欧美日韩国产在线观看 | 成人国产精品久久久 | 久久99视频| 亚洲精品电影在线观看 |