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