c# - 获得行动目标

标签 c# .net .net-4.0 anonymous-methods

我已经创建了以下示例代码:

class Program {
    static void Main(string[] args) {
        var x = new ActionTestClass();
        x.ActionTest();
        var y = x.Act.Target;
    }
}

public class ActionTestClass {
    public Action Act;
    public void ActionTest() {
        this.Act = new Action(this.ActionMethod);
    }

    private void ActionMethod() {
        MessageBox.Show("This is a test.");
    }
}

当我以这种方式执行此操作时,y 将是一个 ActionTestClass 类型的对象(为 x 创建)。现在,当我换行时

this.Act = new Action(this.ActionMethod);

this.Act = new Action(() => MessageBox.Show("This is a test."));

y( Action 的目标)将为空。有没有一种方法可以让我在使用匿名操作的过程中也获得目标(示例中的 ActionTestClass 对象)?

最佳答案

缺少 Target (iow == null) 意味着委托(delegate)要么正在调用 static 方法,要么没有环境被捕获( iow 不是闭包,只是一个“函数指针”)。

关于c# - 获得行动目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8298027/

相关文章:

c# - 限制基类参数的类型

c# - 如何使用 Roslyn 在 C# 中添加新运算符

.net - EventStore嵌入式客户端如何使用?

C# - 如何确定类型是否为数字

.net - .Net MVC 控制台中的线程退出消息

.net - 通过 SetSecurityDescriptor 设置 WMI ACL

C# 创建一个定时器循环,每 30 分钟运行一次代码?

c# - 如何跨多个项目共享cshtml页面?

c# - RadComboBox 展开时间长

c# - WPF 数据绑定(bind)不填充选项卡?