gpt4 book ai didi

c# - 定义一个将通用操作作为参数的通用操作

转载 作者:太空宇宙 更新时间:2023-11-03 15:28:17 25 4
gpt4 key购买 nike

我正在使用 .Net 4.5。如何定义将另一个通用操作作为参数的通用操作?当我尝试以下操作时,编译器似乎将 T 解释为实际类型并提示找不到它的定义:

public static Action<Action<T>, IEnumerable<T>> RepeatForEach = (a, x) =>
{
foreach (T t in x)
{
a.Invoke(t);
}
};

我尝试了以下方法,但均无效:

Action<T><Action<T>>
Action<Action<T>><T>
Action<Action<T>> where T : object

最佳答案

我认为不可能基于另一个泛型创建一个泛型。正如 sstan 所说:

"Even generic types need to be declared somewhere."

相反,你应该尝试另一种方法,你创建一个扩展方法怎么样?这是我的建议:

public static void RepeatForEach(this Action<T> action, IEnumerable<T> itens)
{
foreach (T t in x)
{
a.Invoke(t);
}
}

所以你可以这样调用它:

Action<int> t = (int i)=> Console.WriteLine(i);
t.RepeatForEach(myitens)

关于c# - 定义一个将通用操作作为参数的通用操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34475416/

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