4

我在这段代码中有一个关于委托的问题,我添加了三个方法来委托。有返回一个字符串。在行

string delOut = del("啤酒");

给我宝贵的 delOut 代表分配这个“长度:4”

如何收集委托中的方法返回的所有字符串?

public class NaForum
{
    public delegate string MyDelegate(string s);

    public void TestDel()
    {
        MyDelegate del = s => s.ToLower();
        del += s => s.ToUpper();
        del += s => string.Format("Length : {0}", s.Length);

        string delOut = del("Beer");
        Console.WriteLine(delOut);
    }
}

感谢您的任何回答。

4

2 回答 2

9

您需要使用Delegate.GetInvocationList

var results = new List<string>();

foreach (MyDelegate f in del.GetInvocationList()) {
    results.Add(f("Beer"));
}

现在,results保存所有返回值。

于 2013-06-18T13:18:57.467 回答
1

请参阅C#:Creating Multicast delegate with boolean return type:您需要自己进行多播以获取各个返回值。

于 2013-06-18T13:16:41.440 回答