为什么委托分配了实例方法存储实例对象

本文关键字:存储 实例 对象 实例方法 分配 为什么 | 更新日期: 2023-09-27 18:34:12

method已经是开始执行的位置的地址(这是一个int)。大概这个地址与它相关的对象实例相关联,那么为什么委托需要对象(Target)呢?

为什么委托分配了实例方法存储实例对象

假设目标未存储。调用实例方法的委托应该做什么?如果没有作为当前实例的对象引用(C# 中的this引用),实例方法将无法运行。无法为这种情况定义合理的行为。

实例

方法可以访问实例字段。如果没有this引用,这些字段将无法访问。

如果不想存储目标,请将实例方法包装在静态函数中:

MyCustomClass obj = new MyCustomClass();
Action withTarget = obj.SomeMethod; //stores target
static void MyCustomInvoker(MyCustomClass obj) {
 obj.SomeMethod();
}
Action<MyCustomClass> noTarget = MyCustomInvoker; //does not store any target