我可以将带有out参数的方法作为Func传递吗?
public IList<Foo> FindForBar(string bar, out int count) { } // somewhere else public IList<T> Find(Func<string, int, List<T>> listFunction) { }
Func需要一个类型,因此out不能在那里编译,而调用listFunction需要一个int,并且不允许out进入。
有没有办法做到这一点?
ref并且out它们不是类型参数定义的一部分,因此您不能使用内置的Func委托来传递ref和out参数。当然,如果需要,您可以声明自己的委托:
ref
out
Func
delegate V MyDelegate<T,U,V>(T input, out U output);