網路上常見「靜態方法常駐記憶體」、「靜態方法比實例方法先載入」等說法。本文從 CLR 架構、AppDomain 機制、執行緒安全三個維度澄清觀念,並提供選擇指南。
public class SomeClass
{
private string _myField = null;
public static SomeClass Instance = new SomeClass(); // 靜態單例
public void InstanceMethod() { } // 實例方法
public static void StaticMethod() { } // 靜態方法
}
public class AnotherClass
{
public static void Main()
{
// 方式 1:新建實例呼叫實例方法
SomeClass obj1 = new SomeClass();
obj1.InstanceMethod();
// 方式 2:透過靜態實例呼叫實例方法
SomeClass.Instance.InstanceMethod();
// 方式 3:直接呼叫靜態方法
SomeClass.StaticMethod();
}
}
❌ 錯誤。靜態方法屬於類型,類型屬於組件,組件載入於 AppDomain。AppDomain 可卸載(除預設域),組件隨域卸載而釋放。靜態方法與實例方法同樣隨 AppDomain 生命週期管理。

❌ 錯誤。.NET 組件載入為整體操作(Whole Assembly Load),Metadata 一次性載入。靜態與實例方法同屬一類型,同屬一組件,同時載入。無「用到才載入」機制。
this._field)SomeClass.Instance)File.Exists(path)、數學運算、工具方法