[英]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.