c# - 有没有办法用 List 制作扩展方法,方法(T)作为参数?
问题描述
我需要制作一个将List<>
任何类型(List<T>
)作为第一个参数this
的扩展方法(因为它是一个扩展)和一个将与列表(Method(T some_parameter)
)类型相同的参数作为第二个参数的方法。在这个方法中,我需要对List<T>
.
我不太了解 ifdelegate
和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);
}
}
}
我需要完全使用“动作”吗?如果有人知道类似方法的信息,请给我发送参考资料...
解决方案
出于学术目的
给定
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
推荐阅读
- css - css 动画在滚动时发生,而不是在页面加载时发生
- arrays - 如何等待带有mongodb查询的嵌套forEach语句返回函数
- android - AdMob 测试广告无法在已发布的 Android 应用版本上运行
- python-3.x - ModuleNotFoundError:从 Dockerfile 调用时没有名为“hello”的模块
- python - 如何在不使用 python 中的 GUI 的情况下显示列表并在特定时间后隐藏它?
- json - 使用 linux 服务器获取键值对
- javascript - 如何修复标题中的徽标显示?
- python - 按钮未显示在 Tkinter 中,即使带有几何管理器
- azure - 无法连接到 Azure 上的 Splunk Enterprise
- r - R中这两个数据有什么区别?