拡張メソッドの中には、他の拡張メソッドを使用することが時々意味があります。 "this"の構文を使用する必要がある場合は、私の心を固めることはできません。 Foo1
対拡張メソッドクラス内で拡張メソッドを呼び出すかどうか
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
。 2つの質問が発生します:
- パフォーマンス。生成された
IL
コードの面で違いはありますか? - コードデザイン。どの2つのアプローチのどちらが望ましいでしょうか?どうして?
個人的に私は拡張メソッドを優先します。しかし、それらは構文的な砂糖です。 FooとFoo1は全く同じ方法でコンパイルされます。そのため、パフォーマンスに違いはありません。編集:拡張メソッドを使用する利点は、IntelliSenseのサポートです。変数の名前を入力することもできますし、IntelliSenseは拡張メソッドも表示します。このアプローチ(Linqのような)では、フレームワークをもっと早く探索することができます。 – Timo