2010-12-20 101 views
2

我不知道什麼時候應該用'靜態'修飾符爲我的委託加前綴?我們什麼時候需要用「靜態」前綴代表?

我覺得沒有'靜態',代表仍然適用於一般情況。

正確的,如果我錯了。

給我舉例說明靜態代理是必須的。

編輯1:我假設我們可以定義一個靜態的代表,例如犯了一個錯誤,

static delegate void foo(int bar); 

我關閉這個問題,因爲這是不可能的:-)

回答

3

委託類型不能用static修飾符聲明。

委託字段,屬性和事件可能被聲明爲靜態。與其他任何類成員一樣,這使得它成爲類的成員,而不是類的實例,所以字段/屬性/事件將實際上是全局的。

當你打算在同一個類的所有實例之間共享一個成員時,你只需要這個,而不是給每個實例自己的成員副本。

+0

委託類型是指全局委託,而不是其他類型(結構或類)中定義的委託?我對這些術語感到困惑。 – xport 2010-12-20 02:42:03

+1

委託類型表示委託的定義。 (比如'public delegate void Foo(string bar);')不管這些聲明出現在哪裏,它們都不能是靜態的,就像嵌套類型不能是靜態的一樣。 (好的,嵌套類實際上可以是靜態的,但是*表示完全不同的東西。*'靜態類A'和''密封抽象類A''意思相同,它和'static'的用法不同會員。) – cdhowie 2010-12-20 02:42:50

+0

好的。你的回答很好!謝謝。我假設我們可以定義一個靜態委託,但事先沒有嘗試編譯過,我犯了一個錯誤。 – xport 2010-12-20 02:52:33

1

創建靜態委託當所有實例要調用相同的代理時。

+0

對不起,我在我的問題中犯了一個錯誤。定義靜態委託是不可能的。感謝您的參與。 – xport 2010-12-20 02:58:20

+0

upvote因爲你可能會認爲我在談論委託實例而不是委託類型。 – xport 2010-12-20 03:07:10

+0

在編輯之前,聽起來好像你在談論委託實例,而在我的答案中,你會看到「call」這個詞。 +1爲誠實。 – Xaqron 2010-12-20 12:31:41

相關問題