English 中文(简体)
Func <T> with out paraile
原标题:Func<T> with out parameter
  • 时间:2009-08-15 23:45:58
  •  标签:

Can 我通过一个参数外的法索。

public IList<Foo> FindForBar(string bar, out int count) { }

// somewhere else
public IList<T> Find(Func<string, int, List<T>> listFunction) { }

富人需要一种如此之便的集权,而唱名功能则需要一种内装,并得起。

是否有办法这样做?

最佳回答

不属于类型参数定义的一部分,因此,您可以不使用载于<代码>Func的代表通过refout的论点。 当然,如果你想要:

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直接通过,你也需要确保这一点)。





相关问题
热门标签