c# - Action<T> vs 匿名方法问题

标签 c# delegates action anonymous-methods

我回答了一个问题并提出了另一个问题,为什么以下不起作用?我不明白。编译器说:无法将匿名方法转换为字符串。但是为什么?

    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/

相关文章:

c# - 使用不同的 DLL 进行调试和发布版本

c# - WPF 从底部到顶部调整窗口大小

c# - 动态执行委托(delegate)

ios - 委托(delegate)了解由应用程序发起的电话通话何时结束

swift - 从单元格委托(delegate)中删除重复代码代码

C# Action 封装了一个带有签名 void SomeFunc(class arg) 的方法

c++ - Qt中的弹出菜单事件控件

c# - 在 STORED PROCEDURE 调用之前执行 SET 语句

c# - Visual Studio 2015 中的 Azure Web 作业 - 部署无法正常工作,出现错误 "target "MSDeployPublish“项目中不存在”。

javascript - 如何添加 AJAX 操作 - Elgg