我非常有信心我应该能够使用非静态方法的委托,但下面给出了一个错误:
public class TestClass
{
private delegate void TestDelegate();
TestDelegate testDelegate = new TestDelegate(MyMethod);
private void MyMethod()
{
Console.WriteLine("Foobar");
}
}
我得到的错误是:
字段初始值设定项不能引用非静态字段,方法或 属性
如果我将MyMethod设为静态,一切正常。我是否完全错误地认为我可以使用非静态方法的委托(我确信我记得在过去这样做过。)
答案 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;