2011-10-09 93 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