Różnica między internal a protected internal.

W języku C# występuje pięc modyfikatów, które określają poziom dostępu do zmiennych i metod wchodących w skład klas czy struktur. Najbardziej popularnych z nich, modyfikatorów public i private omawiać nie będę, gdyż ich działanie jest chyba oczywiste od samego początku nauki. Problematyczne jednak staje się już dla co po niektórych zrozumienia działania modyfikatorów internal oraz protected internal. Ostatnim z tej piątki jest osobny modyfikator protected, którego zrozumienie jest kluczowym aspektem do zrozumienia działania modyfikatora protected internal.

Tak więc od początku.

Dzięki słówku kluczowemu internal, metody i zmienne są dostępne z poziomu wszystkich innych klas, jednak muszą się one znajdować w tej samym jednostce kompilacji (podzespole). Czym jest taki podzespół? Otóż jest to przykładowo jedna biblioteka dll.
Każda inna aplikacja, która z tej biblioteki będzie chciała skorzystać, tych zmiennych oraz metod nie zobaczy. Można więc stwierdzić, że w obrębie tego samego podzespołu, słówko internal jest synonimen słówka kluczowego public.

Słówko protected sprawia, że zmienna/metoda która jest nim opatrzona staje się niedostępna dla wszystkich innych klas (nawet w tym samym podzespole), z wyjątkiem tych, które z niej bezpośrednio dziedziczą i ją rozszerzają.

Modyfikator protected internal z kolei jest jakby połączeniem tych dwóch powyższych. Nie określa on jednak, że dana zmienna/metoda jest w tym samym momencie protected ORAZ internal, lecz protected LUB internal. Przykładowo, gdy słówka te zostaną użyte przy metodzie, następnie w innej klasie (ale w tym samym podzespole), to metoda ta będzie traktowana, jakby posiadała jedynie modyfikator internal, czyli dostep do niej będzie nieograniczony. Z kolei, w innym podzespole dostęp można do niej uzyskać jedynie w chwili, gdy z klasy zawierającej tę metodę próbować będziemy dziedziczyć.

Pod linkiem znajduje się przykład (w formie dwóch bibliotek dll) w VS2008 demonstrujący różnicę między modyfikatorami internal oraz protected internal wraz z komentarzami:  link

2 komentarzy do tej pory

  1. Dawid Pająk on

    Rozkręcasz się :)

  2. spider on

    Halo! Nie śpimy.


Dodaj komentarz

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Zmień )

Twitter picture

You are commenting using your Twitter account. Log Out / Zmień )

Facebook photo

You are commenting using your Facebook account. Log Out / Zmień )

Connecting to %s

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.