内部扩展方法有时使用其他扩展方法是有意义的。如果您应该使用“this”语法,我无法下定决心。
public static class StringExtensions
{
// Foo vs Foo1
public static string Foo(this string s)
{
return s + "Foo" + s.Bar(); // "this" syntax
}
public static string Foo1(this string s)
{
return s + "Foo" + Bar(s);
}
public static string Bar(this string s)
{
return s + "Bar";
}
}
Foo
vs Foo1
。出现了两个问题:
IL
代码是否存在差异?答案 0 :(得分:3)
没有性能差异,因为扩展方法被编译为常规静态方法调用。
我认为this
语法是首选的,因为如果您将方法声明为扩展方法(this string s
) - 始终调用它是件好事作为扩展方法,不要与常规静态调用混淆。