将此示例的相同方法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);
}
*/
}
答案 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);
}
}