使用非静态方法的代理[没有选择答案]

时间:2013-02-13 18:02:28

标签: delegates

我非常有信心我应该能够使用非静态方法的委托,但下面给出了一个错误:

public class TestClass
{
    private delegate void TestDelegate();
    TestDelegate testDelegate = new TestDelegate(MyMethod);

    private void MyMethod()
    {
        Console.WriteLine("Foobar");
    }
}

我得到的错误是:

  

字段初始值设定项不能引用非静态字段,方法或   属性

如果我将MyMethod设为静态,一切正常。我是否完全错误地认为我可以使用非静态方法的委托(我确信我记得在过去这样做过。)

2 个答案:

答案 0 :(得分:3)

回答这个问题,因为我必须“展示更多评论”,然后在我意识到实际答案是什么之前再做一次。

错误:

  

字段初始值设定项不能引用非静态字段,方法或   属性

解决方案是初始化构造函数内的委托。

我实际上无法在C#语言参考中找到它,并且很多库存示例都是静态方法。

public class TestClass
{
    private delegate void TestDelegate();
    TestDelegate testDelegate;

    public TestClass()
    {
        testDelegate = new TestDelegate(MyMethod);
    }

    private void MyMethod()
    {
        Console.WriteLine("Foobar");
    }
}

答案 1 :(得分:0)

怎么样 TestDelegate testDelgate = MyMethod;