3
A
回答
1
好了,所以我覺得會發生什麼情況是這樣的:
聲明一個代表真正應該問的編譯器創建一個新的類特殊的爲您服務。這個類的工作是作爲一個函數指針(如果需要的話可以是多個函數指針)。
編譯器將通過創建一個新類來完成這個任務,因爲您需要使用委託完成所有工作。它會繼續創建這個類,但是你得到的所有東西都是實例級別的方法和屬性等。
所以聲明一個委託爲靜態是無意義的(正如JaredPar和其他人指出的那樣)。你說'給我一個靜態類,其中所有的膽量都不是靜態的(因此無法達到)等等。「這是沒有意義的。
4
聲明delegate
是聲明一個類型。 C#中的代表無法制作成static
。如果你想聲明一個類型委託的變量,你會這樣做:
public delegate void SomeCoolDelegate(); // declare a type called SomeCoolDelegate
public static SomeCoolDelegate foo; // declare foo as an object of type SomeCoolDelegate
6
這對委託沒有意義;我的意思是,從語義上講,就像說我永遠不想實現這個方法簽名!
你可以聲明一個實現爲靜態...
protected static SomeCoolDelegate SomeMethod { get; set; }
當你標記一個類爲靜態的,你說你永遠不希望它被實例化。委託只是一種識別方法簽名的方法。
2
聲明委託正在聲明一個類型。因爲只包含實例方法的類型被聲明爲靜態,所以它非常少。
0
委託是一種類型,在運行時透視類型只是數據存儲的分類,就像包含成員的文件夾一樣,沒有必要將類型設爲靜態,因爲類型仍然是靜態的。任何類型的成員都可以是靜態的。
C#讓我們在類上編寫靜態代碼,以限制開發人員只在類型中寫入靜態成員,但這並不意味着該類型是或不是靜態的。
相關問題
- 1. 定義VBA靜態變量導致編譯器錯誤
- 2. 「導入」後的「靜態」修飾符是什麼意思?
- 3. 編譯錯誤:對非靜態方法的靜態引用
- 4. PHP - 爲什麼我無法聲明靜態常量變量?
- 5. 爲什麼不能在類中聲明const靜態字符串
- 6. 爲什麼委託必須是靜態的?
- 7. C#修飾符'abstract'對此項無效
- 8. 爲什麼不能在非靜態塊中聲明靜態最終變量?
- 9. Haxe宏:導致無效訪問靜態
- 10. 將QJson靜態編譯爲Qt應用程序(多個聲明錯誤)
- 11. 聲明靜態變量時的輸出是什麼?爲什麼?
- 12. 靜態庫導致有效的堆指針聲明
- 13. 爲什麼依賴屬性被聲明爲靜態只讀?
- 14. 聲明不能被標記爲「靜態」,爲什麼
- 15. 爲什麼不能將Java類聲明爲靜態?
- 16. 爲什麼我的登錄方法聲明爲靜態?
- 17. 爲什麼jsp中的EL函數必須聲明爲靜態?
- 18. 爲什麼錯誤LINK2005:當我將對象聲明爲靜態時,對象已定義的錯誤消失
- 19. 靜態類成員聲明錯誤
- 20. 聲明非靜態類靜態
- 21. 聲明類的靜態和非靜態
- 22. 靜態修飾符在面向對象編程中的用途是什麼?
- 23. 爲什麼在靜態函數上顯示致命錯誤
- 24. 防止使用靜態修飾符
- 25. Java常量和靜態修飾符
- 26. 編譯錯誤:「修飾符'public'對此項無效」,但明確實現了接口
- 27. createOperate方法不能被聲明爲靜態;靜態方法只能在靜態或頂級類型中聲明
- 28. 爲什麼編譯此代碼會導致語法錯誤?
- 29. 爲什麼靜態用於導入庫
- 30. 靜態聲明和非靜態聲明之間的區別
你是否試圖讓這個代表只能是用於調用靜態方法? – Justin 2011-04-08 20:10:57
@Justin:假設是:。:-) – richard 2011-04-08 20:18:03