C# 如何声明添加到 Action<> 中的传递参数?

问题描述 投票:0回答:1

所以我想在类中存储一个多播 Action,并将从修改类的私有 Action 对象的类方法调用的方法传递给它:

    public class Bar;

    public class Xzxxy
    {
        public delegate void BarDelegate(Bar bar);
        private Action<Bar> BarAction;

        public void Add(BarDelegate bd)
        {
            BarAction += bd;
        }

        public void Invoke(Bar bar)
        {
            BarAction.Invoke(bar);
        }
    }

这不起作用,因为在

Xzxxy.Add
中,
BarAction += bd;
行有错误
Cannot implicitly convert Xzzzy.BarDelegate to System.Action<Bar>
。我应该如何声明
BarDelegate
才能获得我想要的行为?

c# delegates
1个回答
0
投票

这是一种解决方案

public void Add(BarDelegate bd)
{
    BarAction += (bar)=>bd(bar);
}

或者更好的方法是将

Action<Bar>
传递给 Add 方法

public void Add(Action<Bar> bd)
{
    BarAction += bd;
}
© www.soinside.com 2019 - 2024. All rights reserved.