若將類中的某個成員聲明為static,該成員稱為靜態成員。類中的成員要麼是靜態,要麼是非靜態。一般說來,靜態成員是屬於類所有的,非靜態成員則屬於類的實例--對象。
以下示例代碼演示了如何聲明靜態和非靜態成員。
程序清單10-5:
using System; class Test { int x; static int y; void F(){ x=1; //正確,等價於this.x=1 y=1; //正確,等價於Test.y=1 } static void G(){ x=1; //錯誤,不能訪問this.x y=1; //正確,等價於Test.y=1 } static void Main(){ Test t=new Test(); t.x=1; //正確 t.y=1; //錯誤,不能在類的實例中訪問靜態成員 Test.x=1; //錯誤,不能按類訪問非靜態成員 Test.y=1; //正確 } }
類的非靜態成員屬於類的實例所有,每創建一個類的實例,都在內存中為非靜態成員開辟了一塊區域。而類的靜態成員屬於類所有,為這個類的所有實例所共享。無論這個類創建了多少個副本,一個靜態成員在內存中只占有一塊區域。