使用函数作为 Action 参数
Using a function as an Action argument
对于我的场景,我有 List<T> removable
用于从我的变量 ObservableCollection<T> collection
中删除项目。我不相信我可以在这里使用 Except
方法,因为我需要 collection
来创建更改事件。
removable.ForEach(profile => collection.Remove(profile));
是否有更好的语法将函数作为 Action
参数传递?在 Java 中,我只传入方法:
removable.stream().forEach(collection::remove);
在 Java 中,如果函数签名匹配,您可以传递函数,就像在 C# 中一样,所以不,如果函数签名不相同,没有更好的方法,例如Java.
但是,您始终可以创建一个扩展来接受任何 return 类型,如下所示:
public static class Extensions
{
public static void ForEach<TIn, TOut>(this List<TIn> TheCollection, Func<TIn, TOut> ProcessFunction)
{
TheCollection.ForEach((item) => ProcessFunction(item));
}
}
那你可以
removable.ForEach<string, bool>(collection.Remove);
这不是更快,而是更具可读性。
对于我的场景,我有 List<T> removable
用于从我的变量 ObservableCollection<T> collection
中删除项目。我不相信我可以在这里使用 Except
方法,因为我需要 collection
来创建更改事件。
removable.ForEach(profile => collection.Remove(profile));
是否有更好的语法将函数作为 Action
参数传递?在 Java 中,我只传入方法:
removable.stream().forEach(collection::remove);
在 Java 中,如果函数签名匹配,您可以传递函数,就像在 C# 中一样,所以不,如果函数签名不相同,没有更好的方法,例如Java.
但是,您始终可以创建一个扩展来接受任何 return 类型,如下所示:
public static class Extensions
{
public static void ForEach<TIn, TOut>(this List<TIn> TheCollection, Func<TIn, TOut> ProcessFunction)
{
TheCollection.ForEach((item) => ProcessFunction(item));
}
}
那你可以
removable.ForEach<string, bool>(collection.Remove);
这不是更快,而是更具可读性。