Can 我通过一个参数外的法索。
public IList<Foo> FindForBar(string bar, out int count) { }
// somewhere else
public IList<T> Find(Func<string, int, List<T>> listFunction) { }
富人需要一种如此之便的集权,而唱名功能则需要一种内装,并得起。
是否有办法这样做?
Can 我通过一个参数外的法索。
public IList<Foo> FindForBar(string bar, out int count) { }
// somewhere else
public IList<T> Find(Func<string, int, List<T>> listFunction) { }
富人需要一种如此之便的集权,而唱名功能则需要一种内装,并得起。
是否有办法这样做?
ref
和out
的论点。 当然,如果你想要:
delegate V MyDelegate<T,U,V>(T input, out U output);
为什么不设立一个类别来总结结果?
public class Result
{
public IList<Foo> List { get; set; }
public Int32 Count { get; set; }
}
<代码>Func 代表家属(或Action
,就这一事项而言)只是简单的代表类型。
//.NET 4 and above
public delegate TResult Func<out TResult>()
public delegate TResult Func<in T, out TResult>(T obj)
//.NET 3.5
public delegate TResult Func<T1, T2, TResult>(T1 obj1, T2 obj2)
public delegate TResult Func<T1, T2, T3, TResult>(T1 obj1, T2 obj2, T3 obj3)
等等。 代表本身可以提出/回避参数,因此,就你而言,只有按照其他答复所指出的,由采购处实施习俗。 至于为什么微软没有违约地包装这种产品,考虑到它需要多少组合。
delegate TResult Func<T1, T2, TResult>(T1 obj1, T2 obj2)
delegate TResult Func<T1, T2, TResult>(out T1 obj1, T2 obj2)
delegate TResult Func<T1, T2, TResult>(T1 obj1, out T2 obj2)
delegate TResult Func<T1, T2, TResult>(out T1 obj1, out T2 obj2)
仅限两个参数。 我们甚至没有触及<代码>ref。 这实际上会给开发商带来麻烦和混乱。
您可以把这一信息列入一个暴露于正确接口并称作FindForBar的Mlambda/delegate/Function/method,但我怀疑FindFor Bar作为理由算出一个直径,因此,你需要确保把信息放在ok/安全/可观的/阴影中(即使你刚刚在Find ForBar直接通过,你也需要确保这一点)。