繁体   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