這是因為靜態成員(static members)屬于類本身,而不是類的實例。這是靜態成員的核心特性
1.?靜態成員屬于類,而非實例
當用
static
關鍵字修飾字段、方法或屬性時,這些成員會綁定到類級別,而不是實例級別。它們在類加載時(通常是在程序啟動或首次訪問時)由CLR(公共語言運行時)分配內存并初始化,與是否創建實例無關。
2.?為什么不需要實例化?
內存分配:靜態字段的內存空間在程序運行期間只有一份,所有實例共享同一塊內存(甚至無需創建實例即可訪問)。
訪問方式:通過類名直接訪問(例如
ClassName.StaticField
),無需通過new
創建對象。
public class MyClass
{public static int StaticValue = 42; // 靜態字段public int InstanceValue = 10; // 實例字段
}// 直接通過類名訪問靜態字段(無需實例化)
Console.WriteLine(MyClass.StaticValue); // 輸出: 42// 實例字段必須通過對象訪問
MyClass obj = new MyClass();
Console.WriteLine(obj.InstanceValue); // 輸出: 10
生命周期:靜態字段的生命周期從程序啟動到結束,與實例無關。
共享性:所有實例共享同一個靜態字段的值(修改靜態字段會影響所有實例)。
用途:常用于全局配置、工具方法(如
Math.PI
)、單例模式等場景。