C#語言規範中提到: 1)委托是引用一個或多個方法的數據結構。對於實例方法,委托還可引用實例方法對應的對象實例。 2)在 C 或 C++ 中與委托最接近的是函數指針,但函數指針只能引用靜態函數,而委托則既可以引用靜態方法,也可以引用實例方法。在後一種情況中,委托不僅存儲了一個對該方法入口點的引用,還 ...
C#語言規範中提到:
1)委托是引用一個或多個方法的數據結構。對於實例方法,委托還可引用實例方法對應的對象實例。
2)在 C 或 C++ 中與委托最接近的是函數指針,但函數指針只能引用靜態函數,而委托則既可以引用靜態方法,也可以引用實例方法。在後一種情況中,委托不僅存儲了一個對該方法入口點的引用,還存儲了一個對相應的對象實例的引用,該方法就是通過此對象實例被調用的。
此外,還提到:引用了實例方法的委托也就引用了一個特定的對象,當通過該委托調用這個實例方法時,該對象在調用中成為 this。紅字至少給出一點我認為比較重要的信息,就是委托會保存對象的引用,換言之,實例方法只要被委托引用,該實例就不會被GC回收。(簡單提下,控制項實例的方法被委托引用後,該控制項不會被GC回收(即使調用控制項的Dispose方法),這意味著在調用委托(特別是多播委托)時,該實例的方法會被調用)