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

C# 使用类的实例调用静态方法。为什么?,c#,instance,static-methods,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.Selec

这是我找到的一小段代码。 当我们打电话的时候

    object.Max(s=>s.Length)
为什么我们需要静态方法

    public static TResult Max<TSource, TResult>(
        this IEnumerable<TSource> source,
        Func<TSource, TResult> selector)
    {
        return source.Select(selector).Max();
    }
public static TResult Max(
这是一个数不清的来源,
Func选择器)
{
返回source.Select(选择器).Max();
}
请更新问题标题。我不能很好地抽象它。

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

obj.Max()
与以下内容相同:

DeclaringType.Max(obj, s=>s.Length)
但是请注意,在静态分析过程中,真正的实例方法始终优先,因此,如果对象本身具有合适的
Max
方法,则将选择它而不是扩展方法


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

发布的代码毫无意义。我甚至怀疑它是否能编译。守则的目的是甚么?找到集合的最大值?很遗憾,是的。方法Max()的文档是(对泛型序列的每个元素调用一个转换函数,并返回最大结果值。)