实现类性能的静态和非静态方法

时间:2018-03-31 10:41:40

标签: c# static-methods compiler-optimization

将此示例的相同方法PublicMethod写为静态和非静态i是正确的吗?是否会对调用非静态方法的性能产生一些影响,或者编译器会优化代码?

public class MyClass
{
  private double y;
  private double PrivateFunc(double x) { return some_operation(x,y);}

  public static double PublicFunc(MyClass A, double x)
  {
      return A.PrivateFunc(x);
  }

  public double PublicFunc(double x)
  {
      return MyClass.PublicFunc(this,x);
  }

  /* instead of repeating code of the static method
  public double PublicFunc(double x)
  {
      return PrivateFunc(this,x);
  }
  */
}

1 个答案:

答案 0 :(得分:1)

是的,有时候方法的静态版本和非静态版本很方便。 string.Equals()是一个示例,但此方法的静态版本和非静态版本Mono and Flux Caching

但是,为什么在这种情况下你认为你需要私有版本的方法?

您可以在没有私有方法的情况下实现它,如下所示:

public class MyClass
{
    private double y;

    public static double PublicFunc(MyClass A, double x)
    {
      return A.PublicFunc(x);
    }

    public double PublicFunc(double x)
    {
      // The actual implementation.
      return some_operation(x, y);
    }
}