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

C# 靜態與非靜態方法:存取規則差異、視窗類別實例傳遞模式與靜態方法存取實例成員技巧

     編輯:關於C語言

靜態方法(static)屬於類別,無 this**;非靜態方法屬於實例,可存取所有成員。

存取規則驗證


class A {
    int x; static int y;
    static int F() { /*x=1;*/ y=2; } // ❌ 靜態方法不可存取非靜態 x
}

原因:x 每實例一份,靜態方法無 this 無法知道存取哪個實例的 x。

靈活技巧:傳遞實例參數


class Window {
    public string Caption; public bool IsActive; public IntPtr Handle;
    public static int TotalOpen;

    public Window() { TotalOpen++; /*建立視窗*/ Handle = ...; }
    ~Window() { TotalOpen--; /*銷毀視窗*/ }

    public static string GetCaption(Window w) => w.Caption; // 透過參數存取實例成員
}

靜態方法 GetCaption 接收 Window 參數,即可存取該實例的非靜態成員。

設計指引

  • 無狀態純功能、工廠方法、擴充方法 → static。
  • 需存取實例狀態、多型行為 → 非靜態。
  • 靜態方法需實例資料時,明確要求呼叫端傳遞實例。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved