程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 你不知道的Static,不知道Static

你不知道的Static,不知道Static

編輯:C#入門知識

你不知道的Static,不知道Static


Static靜態字段,靜態方法,靜態代碼塊

  簡介

     一些場景下會要求一個類的多個實例共享一個成員變量;有時候想定義一些不和具體對象關聯、不需要new就調用的方法

舉例:Console類的WriteLine,MessageBox的Show。這個時候就要使用靜態。

     所謂靜態方法、靜態成員是類的方法、類的成員,他不歸屬於任何一個對象。因此不用new出來,直接類型.靜態方法()就能用了。

 

  特征

1、static變量不需要new就可以直接通過類名調用。static變量是共享的內存空間,非static變量則是對象隔離的。

2、static 方法中無法使用this關鍵字,因為static獨立於對象存在,不是任何人的唯一。

3、static成員中只能訪問static成員,不能直接訪問非static成員。非static成員可以訪問static成員。

 

  靜態代碼塊

1. 示例

class MyTest {     static MyTest()     {         Console.WriteLine("靜態代碼塊");     }     public MyTest()     {         Console.WriteLine("構造方法");     }   } MyTest t1 = new MyTest();           MyTest t2 = new MyTest();   2. 說明 1.靜態代碼塊,在類第一次被使用的時候執行一次,只要用到類,哪怕沒new對象(比如只是聲明變量)也會被執行,且只執行一次。 2.靜態代碼塊,在構造函數執行之前執行。   3. 試題  public class MyJingTaiDaimaKuai     {         public static int i = test1();//最開始執行         public int age = test2();//new的時候先執行成員變量的初始化,再執行構造函數           static MyJingTaiDaimaKuai()         {             Console.WriteLine("靜態代碼塊");//再執行         }         public MyJingTaiDaimaKuai()         {             Console.WriteLine("構造函數");         }           public static int test1()         {             Console.WriteLine("test1");             return 3;         }           public static int test2()         {             Console.WriteLine("test2");               return 333;         }     }   MyJingTaiDaimaKuai a1 = new MyJingTaiDaimaKuai(); Console.WriteLine(a1.age);   MyJingTaiDaimaKuai a2 = new MyJingTaiDaimaKuai(); Console.WriteLine(a2.age); /* 對以上代碼描述如下*/ /* * 1.只要接觸類,最先執行的是類中的靜態的成員變量。 * 2.其次執行的是靜態代碼塊。 * 3.靜態成員變量的聲明和定義僅在首次加載的時候執行一次。 * 4.“動態”成員變量在構造函數之前執行。 * 5.“動態”成員變量在每次實例化對象時候都執行。 */

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved