訪問說明符protected
和internal protected
在C#之間有什麼區別?訪問說明符受保護和內部保護在C#之間有什麼區別#
回答
Internal
可以在程序集中看到。
Protected
可以通過從定義它的類繼承的類中看到。
Protected internal
可以在程序集中看到OR類型派生自它定義的類(包括來自其他程序集的類型)。
參見:http://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx
從頁面複製:
public Access is not restricted.
protected Access is limited to the containing class or types derived from the containing class.
internal Access is limited to the current assembly.
protected internal Access is limited to the current assembly or types derived from the containing class.
private Access is limited to the containing type.
受保護的內部是什麼?不會自己保護做完全相同的事情? – 2010-08-25 06:27:49
@Vince,不,如果它是'protected internal',並且你從另一個程序集中的類中派生出來,那麼你將無法訪問該方法等等。但是如果它只是被「保護」的話,你會的。 – 2010-08-25 07:00:20
如果我無法訪問其他程序集中的方法,那麼我可以將其標記爲內部而不是受保護的內部。我在這裏錯過了什麼嗎? :) – 2010-08-25 10:59:30
internal protected
允許你從哪個不是從同一個對象的派生類在同一裝配體中的成員,也可以讓保護標準訪問您從另一個程序集訪問成員。這是內部|保護的,而不是內部&保護(雖然CLR允許後者,C#不)
請參閱http://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx。 – 2010-08-17 07:47:49
呃,我在找什麼? – 2010-08-17 07:50:01
根據我的理解,受保護的內部沒有任何意義,受保護的內部與受保護的受保護的內容相同,並允許您執行完全相同的操作 – 2010-08-30 01:06:35
internal protected
或protected internal
這是相同的裝置外部protected
(從當前組件外)和內部public
(來自相同組件內)。
protected
表示只有當前類和從它派生的任何類都有權訪問該成員。
internal
表示當前程序集中的任何類都有權訪問該成員。
protected internal
實質上是指protected
或internal
;即從當前類派生的所有類(在任何程序集中)都可以訪問該成員,就像當前程序集中的所有類一樣。這與許多開發人員所期望的相反 - 即protected internal
意味着與protected
和internal
(它不)相同的事情。
internal
- 可由同一程序集(.dll或.exe)中的任何內容顯示。protected
- 任何子類都可見,不管它們在哪裏。internal protected
- 通過同一程序集內的任何東西可見和任何子類,不管它們在哪裏。
傑夫馬特菲爾德說「內部進一步降低能見度」的方式使其不清楚。 internal
和protected
只是不同的可見性。將兩者放在一起使成員更可見。沒有顯式訪問修飾符的默認可見性儘可能小。添加任何訪問修飾符總是會增加可見性。
受保護的內部和受保護訪問說明符涉及到繼承的概念。
讓我們來舉例說明受保護的和受保護的內部。
命名空間有兩個命名空間命名空間A和命名空間B。
在命名空間的,還有一類命名爲CLASSA它由一個命名的方法的接受()使用保護訪問說明符。
在命名空間乙,還有另一類,名爲CLASSB,它從CLASSA 命名空間甲的繼承。
現在有了這個保護符的幫助下,我們可以訪問接受()方法命名空間乙的CLASSB。
但使用保護內部訪問說明符時的概念是不正確的: 如果接受()CLASSA一個使用保護內部訪問符的命名空間的功能,然後CLASSB命名空間B無法訪問它,因爲accept()函數只能在相同命名空間內的繼承類中訪問。
爲了更好地理解受保護和受保護Internal.it之間的區別,最好先了解Protected和internal之間的區別。
內部變量指的是相同的程序集。不能在不同的程序集中訪問。 受保護的變量與私有變量類似,但您可以在相同的程序集或不同的程序集中訪問驅動類。 2)採取不同的組裝。
using InternalTest;
namespace InternalTest1 ----This namespace in assembly Two
{
Public class A1:B
{
Public void GetInternalValue()
{ return x; //error can't access because this is internal
}
Public void GetProtectedValue()
{
return y;//Work because it's protected
}
}
public class C
{
}
}
從上面的例子就清除您可以訪問相同的組件內部而不是在不同的assembly.You可以在同一個裝配它的樣子說喜歡公共variable.you可以通過創建類的對象賦值
3)受保護的內部在相同的程序集中都具有公共變量的優點。 在你使用像保護變量
受保護
如果類被聲明爲「受保護」 diifrent裝配裝置,它可以通過在組件中的子類,以及從組件外子類進行訪問。
INTERNAL
如果該類被聲明爲「內部」是指其可通過在組件內的任何類進行訪問。
保護的內部
如果該類被聲明爲「受保護的內部」是指其可以在組件內僅由它們的派生類訪問。
- 1. 受保護的內部和內部受保護有區別嗎?
- 2. python中的私有公共受保護訪問說明符
- 3. C++受保護的訪問
- 4. TypeScript - 私有變量和受保護變量之間的區別
- 5. 引入受保護訪問說明符的原理
- 6. 訪問修飾符和訪問說明符之間有什麼區別
- 7. 爲什麼FluentNHibernate.Cfg.Db.Create受到內部保護?
- 8. 保護和私人之間的區別
- 9. 受保護的內部和受保護的行爲類似
- 10. 訪問說明符和訪問修飾符有什麼區別?
- 11. 受保護與不受保護的區別
- 12. %s和%c格式說明符之間有什麼區別?
- 13. 受保護的和內部的,不受保護的或內部的
- 14. 受保護的訪問
- 15. 受保護的內部
- 16. 困惑:內部,保護,受保護的內部
- 17. 平面內存模型和受保護內存模型之間的區別?
- 18. 覆蓋受保護的內部受保護!
- 19. C#訪問受保護的領域
- 20. 爲什麼要從外部類訪問受保護的成員?
- 21. 如何在python中提供此訪問說明符保護?
- 22. 訪問受保護或私有屬性
- 23. C#的「受保護內部」是指「受保護」*或*「內部」。任何關鍵字是否意味着「受保護」*和*「內部」?
- 24. 受保護的內部屬性vs受保護的屬性和Resharper
- 25. Java:格式說明符%x和%h之間有什麼區別?
- 26. C#內部getter,帶有內部類參數的受保護setter
- 27. DataProtectionProvider構造保護說明
- 28. 私人和受保護的純虛函數之間是否有區別?
- 29. 作爲scanf的格式說明符,%* c%c和%c之間有什麼區別?
- 30. 在派生類中使用受保護的說明符
可能的重複[什麼是受保護的內部意味着淨](http://stackoverflow.com/questions/2651137/what-does-protected-internal-means-in-net)和[有什麼區別'受保護'和'受保護的內部'](http://stackoverflow.com/questions/585859/what-is-the-difference-between-protected-and-protected-internal) – 2010-08-19 18:58:28