如果我有一个静态方法唯一的好处就是我们有一个copy.Need没有一个对象来调用Method。创建一个对象也可以这样做,即我们可以用对象调用方法。我们为什么要有静态方法。有人可以提供一个例子来解释吗?
答案 0 :(得分:0)
当您拥有私有构造函数时,静态方法很有用,因为您想要抽象实例化过程。
例如在C ++中:
class Foo {
Foo() {}
public:
static Foo *create() {
return new Foo;
}
};
在该示例中,抽象只是在可访问的构造函数中调用,但在实践中,您可能希望拥有一个共享的对象池,因此create()
方法将为您管理此事。
有时当你有const成员需要在构造时被初始化时,将逻辑移动到private
静态方法可能更清晰,例如:
struct Foo;
struct Bar {
Bar() : f(make()) {
}
private:
const Foo f;
static Foo make() {
// Create it here
}
};
答案 1 :(得分:0)
当开发人员确信该方法在类中只有一个实例时,使用静态方法。没有其他实例可以改变它。 例如:
public class People
{
private
public static Int32 GetValue(Int x)
{
return x + 3;
}
}
所以即使你是对象人的实例,getvalue静态方法的返回只产生x + 3。 它通常在您确实使用数学或物理方法等功能方法时使用。 您可以参考使用静态视点的函数式编程。
一些老派的家伙过度使用静态方法而不是做OOP方法。
例如:
public class People
{
public static DataSet GetPeopleById(String personId)
{ .... implementation that using SQL query or stored procedure and return dataset ... }
public static DataSet GetXXXXXXX(String name, DateTime datex)
{ .... implementation ... }
}
上面的实现可以是数千行
这种风格到处发生,使它像OOP风格(因为它发生在课堂上)但是像程序方法一样思考。 这是一个帮助,因为并非所有人都了解OOP风格而不是OOP风格。
使用静态的另一个好处是可以节省内存占用空间并加快速度。 您可以在博客中看到:http://www.dotnetperls.com/callvirt