2011-10-09 92 views
0

如果我有一个静态方法唯一的好处是我们有单一副本。需要没有对象来调用方法。创建一个对象也是一样,也就是说我们可以用对象调用方法。我们为什么要有静态方法。有人可以提供一个例子来解释吗?静态方法使用

回答

0

因为您想抽象实例化过程,所以当您拥有私有构造函数时,静态方法会很有用。

例如,在C++:

class Foo { 
    Foo() {} 
public: 
    static Foo *create() { 
    return new Foo; 
    } 
}; 

在该示例中抽象就叫否则在访问构造函数,但实际上,你可能希望有对象池这是共享的,所以create()方法将为你管理这件事。


有时,当你有需要,在施工时被initalised它可以清洁移动逻辑此为private静态方法const的成员,如:

struct Foo; 

struct Bar { 
    Bar() : f(make()) { 
    } 

private: 
    const Foo f; 

    static Foo make() { 
    // Create it here 
    } 
}; 
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风格。

使用静态的另一个优点是节省内存占用和更快。 你可以在博客中看到:http://www.dotnetperls.com/callvirt