【发布时间】:2018-03-31 10:41:39
【问题描述】:
本例的PublicMethod方法与static和non-static 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);
}
*/
}
【问题讨论】:
-
调用方法是如此之快,你永远看不到任何区别。它更多地是关于可读性。想想为什么需要静态或非静态方法。真的有必要两者兼得吗?
-
你写的代码只不过是递归调用自己。这段代码没有用。当您调用 MyClass.PublicFunc 时,它将处于无限循环并抛出 StackOverflowException... 您是否尝试过这段代码?
-
你首先需要了解静态方法和类方法。以及为什么应该使用它们。如果解决方案是静态方法,OOP 就不会到位。
-
@ChetanRanpariya 虽然我不同意它的实现方式,但它不是递归调用自身。它正在调用另一个静态方法,它不会抛出
StackOverflowException。 -
@AhmedAbdelhameed 同意你的看法。我错过了
PrivateFunc和some_operation方法。
标签: c# static-methods compiler-optimization