C# では、カスタム クラスでメソッドをチェーンする機能をどのように実装して、次のように記述できるようにしますか。
myclass.DoSomething().DosomethingElse(x);
等...
ありがとう!
チェーンは、既存のインスタンスから新しいインスタンスを生成するための優れたソリューションです。
public class MyInt
{
private readonly int value;
public MyInt(int value) {
this.value = value;
}
public MyInt Add(int x) {
return new MyInt(this.value + x);
}
public MyInt Subtract(int x) {
return new MyInt(this.value - x);
}
}
使用法:
MyInt x = new MyInt(10).Add(5).Subtract(7);
このパターンを使用して既存のインスタンスを変更することもできますが、これは一般的に推奨されません。
public class MyInt
{
private int value;
public MyInt(int value) {
this.value = value;
}
public MyInt Add(int x) {
this.value += x;
return this;
}
public MyInt Subtract(int x) {
this.value -= x;
return this;
}
}
使用法:
MyInt x = new MyInt(10).Add(5).Subtract(7);
DoSomething は DoSomethingElse メソッドでクラス インスタンスを返す必要があります。
可変クラスの場合、次のようなもの
class MyClass
{
public MyClass DoSomething()
{
....
return this;
}
}
メソッドはthis、正確に何を達成したいかによって、別の (おそらく新しい) オブジェクトへの参照を返す必要があります。