簡體   English   中英

當我們在C#中聲明一個委托時,內存中會發生什么?

[英]what happens in memory when we declare a delegate in c#?

是委托方法還是類? 如果這是一種方法,那么我們怎么可以實例化它呢? 只有類可以實例化,所以委托必須是類。請幫助我,由於這個原因以及委托存儲在堆或堆棧中的位置,我有點困惑。

委托是指向您的方法/功能的類型安全指針。 這意味着您可以使用委托將方法/函數作為參數傳遞,並且類型也將是安全的。

有關更多信息,請檢查鏈接

委托是與類相同的引用類型,因此存儲在堆中。 可以將委托視為引用的“堆棧”,其中包含函數/方法簽名。

委托從概念上講是type ,但它已定義並充當類(具有MethodInfo屬性,實例(或目標)和某些方法以及運行時信息等)。

它定義了方法簽名。 要實例化它,您需要將它與一個方法相關聯(因此,它基本上是語法糖,用於引用具有顯式簽名的方法)。

它還具有Invoke方法,該方法由運行時關聯的MethodInfo的簽名定義。

委托只是一種類型,非常類似於類,它在堆上分配內存並調用一個實例。委托變量保存對該對象的引用。

就像是

        public class SomeAction : Delegate
        {
              private object _instance;
              private MethodInfo _method;
              public void Invoke()
              {
                //Invoke
              }
          }

不完全像這樣,但與此類似

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM