2012-09-30 93 views
12

MSDN上的C#語言參考定義「受保護的內部」爲「訪問限於當前程序集或從包含類派生的類型」。但從語義的角度來看,'受保護的內部'聽起來像'受保護的和內部的',這意味着只有那些在同一個程序集中的派生類才能訪問成員。有沒有訪問修飾符對同樣的效果有意義?受保護的內部

+0

這總是竊聽我太..類似的問題:http://stackoverflow.com/questions/7000871/internal-protected - 屬性仍然可以從不同的組裝 – nawfal

回答

17

C#沒有任何這樣的訪問修飾符。

然而,CLR不支持它,因爲FamANDAssem訪問級別(protected internal是FamORAssem)

+4

受保護的內部在C#中受支持。它是私有的,僅在C++中提供。受保護的內部是FamORAssem。受保護的私人是FamANDAssem。 – BlackWasp

+0

BlackWasp是正確的。 C#確實支持受保護的內部。請參閱http://msdn.microsoft.com/en-us/library/ms173121(v=vs.110).aspx。 – akton

+4

@BlackWasp:這就是我所說的。 – SLaks

1

不,沒有這樣的修飾詞。 Internal就足夠了,因爲您應該能夠從同一個程序集的其他類型中知道什麼是合法的,哪些不合適。

+0

謝謝!但我想要的是,不可能以這樣的方式定義一個成員,只有派生類和同一個程序集內才能訪問它。儘管現在我不能想到具有這種訪問修飾符會派上用場的場景,但知道沒有這樣的修飾符可以讓程序員說,這個成員是'受保護的和內部的' – adfs

+2

@adfs:只有在方法應該採用'protected'嵌套類類型的參數的情況下,能夠將方法聲明爲'internal' *和*'protected'纔會比'internal'更好,特別是如果受保護的類有內部類型的成員。 – supercat

相關問題