答案 0 :(得分:17)
答案 1 :(得分:3)
答案 2 :(得分:1)
答案 3 :(得分:1)
using System;
using System.Collections.Generic;
public delegate void MyDelegate<T>( T i );
public class DelegateList<T>
{
public void Add( MyDelegate<T> del ) {
imp.Add( del );
}
public void CallDelegates( T k ) {
foreach( MyDelegate<T> del in imp ) {
del( k );
}
}
private List<MyDelegate<T> > imp = new List<MyDelegate<T> >();
}
public class MainClass
{
static void Main() {
DelegateList<int> delegates = new DelegateList<int>();
delegates.Add( PrintInt );
delegates.CallDelegates( 42 );
}
static void PrintInt( int i ) {
Console.WriteLine( i );
}
}
答案 4 :(得分:0)
答案 5 :(得分:0)
我不知道这是否是你想要的,但如果你想拥有一个为列表中的每个元素调用一个动作的方法,你可以使用这样的扩展方法:
public static class Extensions
{
public static void Action<T>(this IEnumerable<T> list, Action<T> action)
{
foreach (T element in list)
{
action.Invoke(element);
}
}
}
使用IEnumerable<string>
类型的myList进行调用的例子:
myList.Action(element => Console.WriteLine(element));
也许LINQ已经在List中实现了一个动作但是如果是这样的话我不知道语法。