2

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

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

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

我得到的错误是:

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

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

4

2 回答 2

3

回答这个问题,因为我必须“显示更多评论”并在我意识到实际答案之前做双重考虑。

错误:

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

解决方案是在构造函数中初始化委托。

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

IE

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

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

    private void MyMethod()
    {
        Console.WriteLine("Foobar");
    }
}
于 2014-02-12T14:25:25.903 回答
0

怎么样 TestDelegate testDelgate = MyMethod;

于 2013-02-13T18:07:51.823 回答