我需要制作一个扩展方法,该扩展方法以List<>
(因为它是扩展名)作为参数,而将任何类型的List<T>
作为this
作为第一个参数,与列表(Method(T some_parameter)
)类型相同的第二个参数。在此方法的内部,我需要对List<T>
中的每个项目进行一些操作。
我不能很好地理解delegate
和Delegate
是否无法理解。我尝试使用delegates
,Delegates
,Lambda表达式,但是什么也没有...
static void Main(string[] args)
{
List<item> lisd = new List<item>();
list.CallForEach((List <item> _list) => EXTENDER.Method(_list));
}
public static class EXTENDER
{
public static void Method<T>(List<T> list)
{
//some code
}
public static void CallForEach<T>(this List<T> list, Action<T> action)
{
foreach(var item in list)
{
action(item);
}
}
}
我需要完全使用“操作”吗? 如果有人对类似方法有所了解,请给我发送参考。
答案 0 :(得分:0)
出于学术目的
给出
public static class Extension
{
public static void MethodEx<T>(this T item)
{
Console.WriteLine(item);
}
public static void CallForEach<T>(this List<T> list, Action<T> action)
{
foreach (var item in list)
action(item);
}
}
用法
public static void Method<T>(T item)
{
Console.WriteLine(item);
}
static void Main(string[] args)
{
var list = new List<int>()
{
1,
2,
3,
4,
5,
6
};
list.CallForEach(x => x.MethodEx());
// or you could use a method group
list.CallForEach(Extension.MethodEx);
//or if its not in your extension class
list.CallForEach(Method);
// ForEach is already part of the List class
list.ForEach(x => x.MethodEx());
list.ForEach(Extension.MethodEx);
list.ForEach(Method);
}
输出所有示例
1
2
3
4
5
6