在静态方法中返回'this'

Jon*_*Jon 2 .net c# this static-classes

我想创建一个具有流畅界面的静态类,但我收到错误:

'this'在静态属性中无效,方法......

这是我的代码:

public static MyClass
{
    private static StringBuilder builder;
    private static StringBuilder RouteBuilder
    {
        get
        {
            if (builder == null)
                builder = new StringBuilder();

            return builder;
        }
    }

    public static MyClass Root()
    {
      RouteBuilder.Append("/");
      return this;
    }

    public static MyClass And()
    {
      RouteBuilder.Append("and");
      return this;
    }

    public static MyClass Something()
    {
       RouteBuilder.Append("something");
       return this;
    }
}
Run Code Online (Sandbox Code Playgroud)

这使我能够做到 MyClass.Root().And().Something();

有没有办法做到这一点或解决方法?

Dar*_*rov 12

那是不可能的.您不能拥有静态类的实例.由于您已将MyClass标记为静态,因此不能有任何实例.不要让它静止:

public class MyClass
{
    private StringBuilder builder;
    private StringBuilder RouteBuilder
    {
        get
        {
            if (builder == null)
                builder = new StringBuilder();

            return builder;
        }
    }

    public MyClass Root()
    {
        RouteBuilder.Append("/");
        return this;
    }

    public MyClass And()
    {
        RouteBuilder.Append("and");
        return this;
    }

    public MyClass Something()
    {
        RouteBuilder.Append("something");
        return this;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以链:

var result = new MyClass().Root().And().Something();
Run Code Online (Sandbox Code Playgroud)