【发布时间】:2015-03-24 06:48:14
【问题描述】:
我在这里查看了多个关于委托的问题,我认为我的语法正确,但 Visual 2012 抛出错误:myMethod 在当前上下文中不存在。
class Class1
{
public delegate void DoSomething(List<dynamic> input);
List<dynamic> myData = new List<dynamic>();
Delegate myMethod;
public void AssignData(List<dynamic> input)
{
myData.Clear();
myData.AddRange(input);
}
public void AssignFunction(DoSomething method)
{
myMethod = method;
}
public void CheckDel()
{
myMethod(myData);
}
}
}
这是似乎可以正常工作的调用代码:
private void Form1_Load(object sender, EventArgs e)
{
List<dynamic> test = new List<dynamic>();
test.Add(1);
test.Add(2);
test.Add(3);
myClass.AssignData(test);
myClass.AssignFunction(callBack);
myClass.CheckDel();
}
public void callBack(List<dynamic> input)
{
MessageBox.Show(input[0].ToString());
}
一切似乎都很好,除了 CheckDel 函数返回上述错误。我希望能够随时使用 AssignFunction 分配方法。然后 Class1 可以使用 CheckDel 方法调用该方法。
【问题讨论】:
-
为什么是
Delegate myMethod;而不是DoSomething myMethod;?
标签: c#