2010-08-13 59 views
5

我得到了一些關於這個的混合消息,所以我希望有人能夠爲我解決這個問題。什麼時候在.NET中使用共享方法

我應該使用共享在下列情況下方法/功能:

我有一個名爲「Person」的一個通用類。這個類代表數據庫中的一個人。

我有一個名爲「PersonManager」的經理類。該類包含添加,更新和刪除單個Person對象的方法。還有一種方法可以從數據庫中查找人員。

這些管理器類中的方法應該聲明爲共享方法嗎?或者每次創建一個PersonManager類的新實例並調用相應的方法更爲合適。

所以,如果共享:

PersonManager.AddPerson(NewPerson) 

與非共享:

Dim MyPersonManager as PersonManager 
MyPersonManager.AddPerson(NewPerson) 

當仰視的人,共享版本將是:

Dim dt as New DataTable 
dt = PersonManager.GetPersons 

與非共享版:

Dim dt as New DataTable 
Dim MyPersonManager as New PersonManager 
dt = MyPersonManager.GetPersons 
+4

這裏是C#的答案http://stackoverflow.com/questions/241339/when-to-use-static-classes-in-c用VB共享代替靜態詞答案 – Bob 2010-08-13 17:01:00

回答

1

由於共享的方法和成員被稱爲在C#中的靜態已經有堆棧溢出的東西...

When to use static classes in C#

+0

感謝您的鏈接!過去我一直處於VB模式,並沒有考慮C#方面的事情。 – Michael 2010-08-13 17:19:06

2

當它們包含與特定對象無關的行爲時,使用靜態方法(在Visual Basic中共享)。他們不需要任何國家來執行他們的任務。

Static Classes and Static Class Members在MSDN:

靜態方法,字段,屬性或事件上,即使已創建無類的實例類調用。如果創建了該類的任何實例,則不能使用它們來訪問靜態成員。靜態字段和事件只存在一個副本,靜態方法和屬性只能訪問靜態字段和靜態事件。 靜態成員通常用於表示響應對象狀態而不會改變的數據或計算;例如,數學庫可能包含用於計算正弦和餘弦的靜態方法。

在你的情況,你可能想用靜態方法如果PersonManager包含一些對象的狀態。相反,您應該能夠創建多個PersonManager對象並分別操作它們。

+0

因此在本例中,PersonManager是否被認爲是包含對象狀態?目前,在我看來,PersonManager只是在做一些事情,而沒有任何東西。我只是想知道最佳做法。 另一個例子可能是處理錯誤。如果使用某種方法將包含異常錯誤的電子郵件發送給某人。對於這種情況,共享/狀態方法似乎最好,是的? – Michael 2010-08-13 17:17:22

相關問題