也許我失去了一些東西,但不應該C#有方法的外部訪問修飾符?即一個修飾符,使方法公開,但只爲其他類,即方法不能被類本身調用?爲什麼沒有「外部」訪問修飾符?
對於諸如公共方法這樣的事情來說,這不會有用嗎?這些公共方法可以通過鎖定來確保鎖定不會從類中重新獲取?
也許我失去了一些東西,但不應該C#有方法的外部訪問修飾符?即一個修飾符,使方法公開,但只爲其他類,即方法不能被類本身調用?爲什麼沒有「外部」訪問修飾符?
對於諸如公共方法這樣的事情來說,這不會有用嗎?這些公共方法可以通過鎖定來確保鎖定不會從類中重新獲取?
顯式實現的接口方法可能是最接近你想要的。當然,如果一個類將this
轉換爲接口類型,它仍然可以自己調用它們。
其實,我認爲其他答案比較好。我打算大肆宣傳你不應該需要這種行爲,但是提出一個聰明的解決方案的誘惑太大了。 – siride 2010-12-11 16:43:43
[Progress](http://msdn.microsoft.com/en-us/library/hh193692.aspx)和[IProgress](http://msdn.microsoft.com/zh-cn/library/hh138298.aspx )接口是一個很好的使用這個的好例子。 'IProgress
我認爲這沒有用。沒有定義任何需求的範例。
在你的例子中:即使有external
關鍵字你如何確保在不釋放鎖的情況下不能在外部重新輸入鎖?
類之間有合同,而且類總是與自己簽訂合同。我認爲沒有關鍵字可以幫助避免這種編程錯誤。在這個特定的例子中,類應該根據其使用級別適當地實現鎖定。
我不知道,我認爲語法澄清代碼的意圖,並確保某些行爲通常是一件好事,這就是爲什麼我們有像readonly關鍵字的東西。沒有理由爲什麼一個班級不能與自己簽訂「合同」 – Homde 2010-12-12 17:00:15
不需要它。訪問控制用於限制對來自不受信任的客戶端代碼的成員的訪問。
請記住,在OOP中,一個類表示一個自主的,自包含的代碼單元,並且隱含地假定它是自洽的。
如果你不能相信自己班裏的代碼不會導致重入,那麼你可以信任什麼?用語言特徵來防範每一種可能的可能性是不切實際的;有時它只是作爲開發人員來確定你自己的代碼的工作:)
有一個'extern'關鍵字,但它不用於你描述的。 http://msdn.microsoft.com/en-us/library/e59b22c5%28v=vs.80%29.aspx – Nobody 2010-12-11 15:59:20
這隻對有多重人格障礙的程序員有用。如果你想要一個類不可訪問的方法,把它們放在一個不同的類中。通過設計,oop類應該可以訪問和控制類中包含的方法和數據。 – ja72 2010-12-11 16:22:50