在C#中,如何实现自定义类中的方法链式调用?这样可以编写类似于以下代码:
myclass.DoSomething().DosomethingElse(x);
etc...
Thanks!
链式调用是一种从现有实例产生新实例的好方法:
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);
class MyClass
{
public MyClass DoSomething()
{
....
return this;
}
}
DoSomething应该返回一个具有DoSomethingElse方法的类实例。
你的方法应该根据你想要实现的目标,返回this
或另一个(可能是新的)对象的引用。