首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 靜態方法與非靜態方法比較詳解

     編輯:關於C語言

定義差異

  • 靜態方法:使用 static 修飾,屬於類別本身,無需實例即可呼叫
  • 非靜態方法:屬於類別實例,需先建立物件

四大核心差異

1. 成員歸屬與記憶體

  • 靜態成員:屬於類別,全程式僅一份副本,儲存在靜態區域
  • 非靜態成員:屬於實例,每個實例擁有獨立副本

2. 存取權限

  • 非靜態方法:可存取類別中任意成員(靜態/非靜態)
  • 靜態方法:僅能存取靜態成員,因非靜態成員需實例化後才有記憶體位址

3. 呼叫方式

// 靜態方法
ClassName.StaticMethod();

// 非靜態方法
var obj = new ClassName();
obj.InstanceMethod();

4. 效能與生命週期

  • 靜態方法:呼叫效率較高(無實例化開銷),但生命週期隨應用程式域,不自動銷毀
  • 實例方法:需建立物件,可由 GC 回收

取得類別名稱

// 靜態方法中
string name = MethodBase.GetCurrentMethod().DeclaringType.FullName;

// 非靜態方法中
string name = this.GetType().FullName;

總結

靜態方法適合工具類、輔助函式、無狀態運算;非靜態方法適合封裝物件狀態與行為。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved