使用类的实例调用静态方法。为什么?

时间:2011-03-26 07:41:44

标签: c# instance static-methods

这是我发现的一小段代码。 当我们打电话时

    object.Max(s=>s.Length)

为什么我们需要静态方法?

    public static TResult Max<TSource, TResult>(
        this IEnumerable<TSource> source,
        Func<TSource, TResult> selector)
    {
        return source.Select(selector).Max();
    }

请更新问题标题。我无法很好地抽象出来。

1 个答案:

答案 0 :(得分:2)

这是扩展方法(通过第一个参数上的this修饰符)。 obj.作为第一个参数传入。所以:

obj.Max()

与:

相同
DeclaringType.Max(obj, s=>s.Length)

但请注意,真正的实例方法在静态分析期间始终优先,因此如果对象具有合适的Max方法本身,则会选择它扩展方法。

扩展方法必须是非嵌套静态类的静态方法。