gpt4 book ai didi

c# - 如何使用 lambda 表达式创建扩展方法

转载 作者:行者123 更新时间:2023-11-30 19:12:53 26 4
gpt4 key购买 nike

问候,

我正在寻找一种转换方式

foreach (var sEvent in Events)
{
sEvent.SomeId = 0;
}

Events.Set(m=>m.SomeId, 0); 

或类似的东西。

所以基本上我想让它成为一个单行事件,将所有“SomeId”设置为 0;

有什么办法吗?

最佳答案

如果EventsList<T>你可以使用:

Events.ForEach( m => m.SomeId = 0 );

如果EventsIEnumerable , ForEach未实现,但您当然可以制作自己的适用于 IEnumerable 的 ForEach你自己。原因ForEach不是为 IEnumerable 创建的, 是they did not want to have extension method on IEnumerable with side effects (这改变了原始集合)。

在 IEnumerable 上实现 ForEach 非常简单:

public static IEnumerable<T> ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
foreach (T element in source)
action(element);
return source;
}

这必须进入 static类就像所有其他扩展方法一样。

关于c# - 如何使用 lambda 表达式创建扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5562572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com