3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
您需要考慮靜態(tài)變量屬于該類,而不是該類的實(shí)例。
如果在類的所有實(shí)例中此變量都應(yīng)該相同,請(qǐng)使用靜態(tài)變量。
如果不是,請(qǐng)使用實(shí)例變量。
通常,使用公共靜態(tài)變量是一種不好的做法 -它是共享的全局資源,如果更改它,則需要同步對(duì)其的訪問。您要避免擁有全局狀態(tài)。

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
我不能說一個(gè)更好,因?yàn)樗鼈冇胁煌挠猛尽?/p>
您熟悉OOP嗎?在OOP中,可以直接從類訪問靜態(tài)對(duì)象或類的成員,而只能從其所屬的實(shí)例訪問非靜態(tài)成員。
C#遵循類似的方法原理??梢灾苯訌念愔性L問靜態(tài)方法,而非靜態(tài)方法(或我喜歡稱呼它們的實(shí)例方法)必須從實(shí)例中訪問。這就是為什么實(shí)例方法需要實(shí)例化的原因,而靜態(tài)方法則不需要實(shí)例化,而且不切實(shí)際(見下文)。
在OOP中,靜態(tài)變量用于無法由實(shí)例變量存儲(chǔ)的值。示例:假設(shè)您想統(tǒng)計(jì)一個(gè)類存在多少個(gè)實(shí)例?您如何將其存儲(chǔ)在單個(gè)實(shí)例中?
這些方法使用類似的原理。它們應(yīng)用于在類的實(shí)例中不可行的過程。我傾向于將它們用于廣泛的過程(而不是技術(shù)術(shù)語),這意味著不需要我實(shí)例化對(duì)象的過程。示例,添加兩個(gè)參數(shù)。(此用法可能正確,也可能不正確,但我相信是這樣)
但是,如果要添加對(duì)象的兩個(gè)屬性,則該方法不能是靜態(tài)的,因?yàn)槟芸炀蜁?huì)意識(shí)到,靜態(tài)方法無法訪問類中的實(shí)例方法或變量。當(dāng)然這是有道理的,因?yàn)槌潜桓嬷?,否則該靜態(tài)方法將不知道從哪個(gè)類的實(shí)例獲取這些信息,因?yàn)樗皇菍?shí)例本身的一部分)
為了不使事情進(jìn)一步復(fù)雜化,我將在這里停止。讓我知道您是否誤解了什么。
- 3 回答
- 0 關(guān)注
- 356 瀏覽
添加回答
舉報(bào)