是否有等效于Java的::符号表示成员函数?

时间:2019-07-31 21:22:10

标签: c#

在Java中,我可以写:

Comparator.comparing(Match::getDate)
.thenComparing(Match::hashCode)
.thenComparing ...

无需编写

Comparator.comparing(m -> m.getDate())
    .thenComparing(m -> m.hashCode())
    .thenComparing ...

C#中是否有类似的速记将成员函数称为lambda表达式?

1 个答案:

答案 0 :(得分:2)

在Java中,::表示法称为方法引用。在C#中没有直接等效的方法引用,但是与C#中的方法引用最接近的表示形式是成员组,这使您可以简化一些满足某些要求的lambda表达式。

这是一本好书:https://www.jetbrains.com/help/resharper/ConvertClosureToMethodGroup.html

没有方法组:

    private static int[] ParseInt(string s)
    {
        var t = ParseString(s);
        var i = t.Select(x => int.Parse(x));
        return i.ToArray();
    }

使用方法组:

    private static int[] ParseInt(string s)
    {
        var t = ParseString(s);
        var i = t.Select(int.Parse);
        return i.ToArray();
    }