我回答了一个问题并提出了另一个问题,为什么以下不起作用?我不明白。编译器说:无法将匿名方法转换为字符串。但是为什么?
public List<string> list = new List<string>();
private void Form1_Load(object sender, EventArgs e)
{
a.IterateObjects(B);
// why this does not work:
a.IterateObjects(delegate(string a) { listBox1.Items.Add(a); });
}
private void B(string a)
{
listBox1.Items.Add(a);
}
public void IterateObjects(Action<string> akce)
{
foreach (string a in list)
{
akce(a);
}
}
最佳答案
你有一些变量混淆。 a
已在别处声明,因此更改:
a.IterateObjects(delegate(string a) { listBox1.Items.Add(a); });
到:
a.IterateObjects(delegate(string s) { listBox1.Items.Add(s); });
它应该可以正常工作。
关于c# - Action<T> vs 匿名方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2425065/