gpt4 book ai didi

c# - 捕获委托(delegate)的所有返回值

转载 作者:行者123 更新时间:2023-11-30 20:01:10 24 4
gpt4 key购买 nike

我在玩委托(delegate)和匿名方法时发现了下面的代码:

delegate int IntegerGenerator();
static void Main()
{
IntegerGenerator numberGenerator;

numberGenerator = () =>
{
Console.WriteLine("returns 7");
return 7;
};
numberGenerator += () =>
{
Console.WriteLine("returns 3");
return 3;
};

// This will always return 3
var num = numberGenerator();

Console.WriteLine("Return value: {0}", num);
}

我对委托(delegate)调用列表中所有方法的返回值很感兴趣。然而,似乎唯一返回的值来自附加到委托(delegate)的最后一个方法。一种可能的解决方法是输入一个集合并将结果添加到其中。但是,由于委托(delegate)的返回类型,这似乎不是解决此问题的正确方法。

如何捕获委托(delegate)中附加方法的所有返回值?

最佳答案

您需要使用 MulticastDelegate.GetInvocationList并分别调用每个委托(delegate)。例如:

List<int> results = numberGenerator.GetInvocationList()
.Cast<IntegerGenerator>()
.Select(x => x())
.ToList();

关于c# - 捕获委托(delegate)的所有返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19421702/

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