類的靜態成員每個類只有一個,非靜態成員每個物件一個 .
若將類中的某個成員宣告為static 該成員稱為靜態成員類中的成員要麼是靜態
要麼是非靜態的一般說來靜態成員是屬於類所有的非靜態成員則屬於類的例項
物件
以下示例程式碼演示瞭如何宣告靜態和非靜態成員
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
static void Main() {
Test t = new Test();
t.x = 1; // 正確
t.y = 1; // 錯誤不能在類的例項中訪問靜態成員
Test.x = 1; // 錯誤不能按類訪問非靜態成員
Test.y = 1; // 正確
類的非靜態成員屬於類的例項所有每建立一個類的例項都在記憶體中為非靜態
成員開闢了一塊區域而類的靜態成員屬於類所有為這個類的所有例項所共享無
論這個類建立了多少個副本一個靜態成員在記憶體中只佔有一塊區域。
類的靜態成員每個類只有一個,非靜態成員每個物件一個 .
若將類中的某個成員宣告為static 該成員稱為靜態成員類中的成員要麼是靜態
要麼是非靜態的一般說來靜態成員是屬於類所有的非靜態成員則屬於類的例項
物件
以下示例程式碼演示瞭如何宣告靜態和非靜態成員
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; // 正確
}
}
類的非靜態成員屬於類的例項所有每建立一個類的例項都在記憶體中為非靜態
成員開闢了一塊區域而類的靜態成員屬於類所有為這個類的所有例項所共享無
論這個類建立了多少個副本一個靜態成員在記憶體中只佔有一塊區域。