委托方法或类? 如果它是一种方法,那我们怎么能实例化呢? 只有类可以实例化 所以代表必须上课 请帮我 由于这个原因,我有点困惑 委托存储在堆或堆栈中的位置?
答案 0 :(得分:1)
Delegate是一个类型安全指针,指向您的方法/函数。这意味着您可以使用委托将方法/函数作为参数传递,并且对于类型也是安全的。
有关详情,请查看this链接
答案 1 :(得分:1)
委托是一种引用类型,与类相同,因此存储在堆上。 将代表视为"堆栈"引用,包含函数/方法签名。
答案 2 :(得分:0)
委托在概念上是类型,但它被定义并充当一个类(具有MethodInfo
属性,实例 - 或目标 - 以及一些方法 - 和运行时信息等.-)。
它定义了一个方法签名。要实例化它,你需要将它与一个方法相关联(因此它基本上是语法糖来引用带有显式签名的方法)。
它还有一个Invoke
方法,该方法由运行时关联的MethodInfo
的签名定义。
答案 3 :(得分:0)
Delegate只是一个类,它类似于在堆上分配内存的类和一个调用它的实例。委托变量保存对该对象的引用。
像
这样的东西 public class SomeAction : Delegate
{
private object _instance;
private MethodInfo _method;
public void Invoke()
{
//Invoke
}
}
不完全像这样,但类似于它