我在此代码中有关于委托的问题,我添加了三个委托方法。返回一个字符串。在行
string delOut = del(“Beer”);
到我宝贵的delOut代表assignet这个“长度: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);
}
}
感谢您的回答。
答案 0 :(得分:9)
您需要使用Delegate.GetInvocationList
:
var results = new List<string>();
foreach (MyDelegate f in del.GetInvocationList()) {
results.Add(f("Beer"));
}
现在,results
包含所有返回值。
答案 1 :(得分:1)
请参阅C#:Creating Multicast delegate with boolean return type:您需要自己进行多播,以获得单独的返回值。