1

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

4

1 回答 1

3

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

实例方法可以访问实例字段。如果没有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
于 2013-10-05T09:16:26.703 回答