C 靜態成員和非靜態成員

2022-08-28 08:12:10 字數 1184 閱讀 5615

一、c#靜態成員和非靜態成員

1. c#靜態成員和非靜態成員

當類中的某個成員使用static修飾符時,就會被宣告為靜態成員。類中的成員要麼是靜態成員,要麼是非靜態成員。一般情況下,靜態成員屬於整個類所有,被該類的所有例項所共享。而非靜態成員則屬於類的例項——物件所有,只被該例項所共享。

因此,對於類的靜態成員來說,無論這個類建立了多少個副本(例項),乙個靜態成員只佔一塊記憶體區域,而不會重複建立多個副本。同一靜態成員在不同的例項中的值是相同的。

在靜態函式中不能使用非靜態成員,如非靜態變數、非靜態函式等。

而對於類的非靜態成員來說,每建立乙個類的例項,都會在記憶體中為非靜態成員開闢一塊區域,建立多少例項,就會開闢多少塊區域。同一非靜態成員在不同的例項中的值可能是不同的。

所以,靜態成員占用的記憶體區域最少。

2. 訪問靜態成員的方式

可以通過「類名+圓點(.)+成員名」的方式來訪問靜態成員,不需要建立類的例項。

二、示例

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace test

static void main(string args)

", classtest.staticstr);

classtest obj1 = new classtest();

obj1.notstaticstr = "obj1";

classtest obj2 = new classtest();

obj2.notstaticstr = "obj2";

// 非靜態變數通過例項(物件)進行訪問,不同例項(物件)的同一非靜態

// 變數可以有不同的值

console.writeline("obj1's notstaticstr:", obj1.notstaticstr);

console.writeline("obj2's notstaticstr:", obj2.notstaticstr);

console.readline();}}

}執行結果:

classtest's staticstr:class

obj1's notstaticstr:obj1

obj2's notstaticstr:obj2

靜態成員和非靜態成員

類中的成員要麼是靜態的要麼是非靜態的。一般來說,靜態成員都歸屬於類所有,使用 static 關鍵字來宣告,不能在類的例項中訪問靜態成員 非靜態成員屬於類的例項 物件所有,不能按照類訪問靜態成員來訪問。下面用乙個例項來幫助理解 using system using system.collections...

靜態成員和非靜態成員

靜態成員和非靜態成員 1.含義 在c de 成員變數被宣告為static 稱為靜態成員變數 在類被例項化時建立,通過類進行訪問,意味著它為該類的所有例項所共享,當某個類的例項修改了該靜態成員變數,其修改值為該類的其它所有例項所見,也就是說乙個類的所有例項的同一靜態變數都是同乙個值。不帶有 stati...

靜態成員與非靜態成員

靜態成員屬於類,而非靜態成員屬於類的例項。兩者的主要區別是static關鍵字,靜態成員使用static關鍵字宣告,放在型別之前,而非靜態成員則沒有。每次類被例項化之後,類中的非靜態成員就會隨著例項複製乙份過去,而靜態成員則仍然保留在類中。靜態成員和非靜態成員是不能互相呼叫。也就是說,靜態方法只能呼叫...