C# 如何实现方法链接?

C# 如何实现方法链接?,c#,methods,chaining,C#,Methods,Chaining,在C#中,如何实现在自定义类中链接方法的功能,以便编写如下内容: myclass.DoSomething().DosomethingElse(x); 等等 谢谢 DoSomething应该使用DoSomethingElse方法返回一个类实例。对于可变类,类似 class MyClass { public MyClass DoSomething() { .... return this; } } 链接是从现有实例生成新实例的良好解决方案:

在C#中,如何实现在自定义类中链接方法的功能,以便编写如下内容:

myclass.DoSomething().DosomethingElse(x); 
等等


谢谢

DoSomething应该使用DoSomethingElse方法返回一个类实例。

对于可变类,类似

class MyClass
{
    public MyClass DoSomething()
    {
       ....
       return this;
    }
}

链接是从现有实例生成新实例的良好解决方案:

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);
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);
MyInt x = new MyInt(10).Add(5).Subtract(7);

您的方法应该返回
或对另一个(可能是新的)对象的引用,具体取决于您想要实现的内容

有关好的示例,请参见+1。通常,这个概念被称为流畅的界面-请参阅。虽然从技术上讲,您没有使用一个,但引入一个将是微不足道的。