这是我发现的一小段代码。 当我们打电话时
object.Max(s=>s.Length)
为什么我们需要静态方法?
public static TResult Max<TSource, TResult>(
this IEnumerable<TSource> source,
Func<TSource, TResult> selector)
{
return source.Select(selector).Max();
}
请更新问题标题。我无法很好地抽象出来。
答案 0 :(得分:2)
这是扩展方法(通过第一个参数上的this
修饰符)。 obj.
作为第一个参数传入。所以:
obj.Max()
与:
相同DeclaringType.Max(obj, s=>s.Length)
但请注意,真正的实例方法在静态分析期间始终优先,因此如果对象具有合适的Max
方法本身,则会选择它扩展方法。
扩展方法必须是非嵌套静态类的静态方法。