2011-08-16 14 views
1

私はクラスを実装したい、つまり.NetにStringクラスがあります。それには、私たちが....`String`クラスのような` Class`の実装

C#のコーディングするときにチェックした場合:あなたは私たちがすなわちSubstringオーバー機能TrimEnd各機能の上に、文字列クラスの複数の機能を呼び出している確認した場合である。この例では

String strString = "Value-12346- ."; 
String[] strArray = strString.Substring(0, strString.Length - 1).TrimEnd().ToUpper().Split("-".ToCharArray()); 

を呼び出され、TrimEndSplit関数が呼び出されます。私は同様に実装したいと思います。私を助けてください。

多くのありがとうございました!

答えて

3

すべてのメソッドが同じ型(または必要な型)のオブジェクトを返すことを確認し、そのようなオブジェクト(カスケードまたはチェーン)でメソッドを呼び出すことができます。文字列の例の上記の各メソッドは、新しい文字列を返します(文字列はここでは変更できません)ので、文字列関数を再度適用することができます。

関連情報は、Fluent Interfaceの仕組みを参照してください。 manojldsがあなたのクラスのメンバー・メソッドは、その所有者クラスの型を返すことによって、これを達成するため、先に指摘したようhttp://en.wikipedia.org/wiki/Fluent_interface

public IConfigurationFluent SetColor(string newColor) 
     { 
      this.color = newColor; 
      return this; 
     } 
+2

これをもう少し強調しましょう。文字列が不変であるため、各関数は新しい文字列オブジェクトを返します。電話や埋め込みのようなリソースが制限された環境で作業する場合は、このことに注意する必要があります。 –

+0

+1は流暢なインターフェイスに言及しています。 – Vladimir

+0

多くのありがとうmanojIds – Sikander

0

:非流暢流暢APIを示すC#の例は良い例です。特に、Stringのメソッドは、毎回新しい文字列インスタンスを返します(ソースを変更して返すのではなく)、あなたのメソッドで "this"のディープコピーを作成してから、新しいオブジェクトとそれを返します。それだけでなく、Stringクラスは不変です。

大変申し訳ございませんが、

+0

多くの多くのありがとう!! – Sikander

関連する問題