gpt4 book ai didi

C# 委托(delegate)字典添加

转载 作者:太空狗 更新时间:2023-10-30 00:35:53 27 4
gpt4 key购买 nike

我想创建一个这样的方法:

private static void AddOrAppend<K>(this Dictionary<K, MulticastDelegate> firstList, K key, MulticastDelegate newFunc)
{
if (!firstList.ContainsKey(key))
{
firstList.Add(key, newFunc);
}
else
{
firstList[key] += newFunc; // this line fails
}
}

但这失败了,因为它说你不能添加多播委托(delegate)。有什么我想念的吗?我认为 delegate 关键字只是从 MulticastDelegate 继承的类的简写。

最佳答案

firstList[key] = (MulticastDelegate)Delegate.Combine(firstList[key],newFunc);

测试:

        var data = new Dictionary<int, MulticastDelegate>();

Action action1 = () => Console.WriteLine("abc");
Action action2 = () => Console.WriteLine("def");
data.AddOrAppend(1, action1);
data.AddOrAppend(1, action2);
data[1].DynamicInvoke();

(有效)

不过老实说,只需使用 Delegate 代替 MulticastDelegate;这在很大程度上是从未真正起作用的东西的后遗症。或更好;特定类型的委托(delegate)(可能是Action)。

关于C# 委托(delegate)字典添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3338430/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com