Jakie są modyfikatory dostępu w języku C#?

Omów krótko każdy z nich.


Modyfikatory dostępu określają dostęp do składników klasy (pół, właściwości, metod) spoza danej klasy.

Brak ograniczeń. Wszystkie składowe oznaczone tym modyfikatorem dostępne są poza nasza klasą.

Składowe oznaczone tym modyfikatorem dostępne są jedynie wewnątrz klasy.

Składowe oznaczone tym modyfikatorem dostępne są jedynie wewnątrz klasy oraz klas dziedziczących po danej klasie.

Składowe oznaczone tym modyfikatorem dostępne są dla klas znajdujących się w tym samym pakiecie.

Klasa nie może być jednocześnie protected i internal, dlatego odpowiedni modyfikator dobierany jest w zależności od użycia. Dla klas dziedziczących użyty będzie protected, dla klas niedziedziczących ale będących w tym samym pakiecie użyty będzie internal.
januszgorszyciel 06-11-2018 08:35
To nie są atrybuty tylko modyfikatory dostępu tak jak opisałeś w odpowiedzi. Atrybuty są w [nawiasach]. Rozumiem, że to mogło być celowe użycie synonimu ale w przypadku definiowania czegoś lepiej unikać takich środków stylistycznych :).

januszgorszyciel 06-11-2018 08:39
"Wszystkie składowe oznaczone tym modyfikatorem dostępne są poza nasza klasą" - jest to dość niefortunnie sformułowane. Raczej napisałbym: Wszystkie składowe oznaczone tym modyfikatorem są widoczne publicznie. Czy czujesz różnicę? Użycie sformułowania 'poza naszą klasą' sugeruje, że nie trzeba używać instancji ani żadnego odwołania do naszej klasy i to pole będzie widoczne :P.

januszgorszyciel 06-11-2018 08:40
dziedziczących ||do|| danej klasie. Rozumiem, że literówka :)

marcin90 06-11-2018 09:47
Co do atrybutów się zgodzę - już poprawione. Ale co do "Wszystkie składowe oznaczone tym modyfikatorem dostępne są poza nasza klasą" i Twojej propozycji "Wszystkie składowe oznaczone tym modyfikatorem są widoczne publicznie." No właśnie chodzi o to, żeby to wytłumaczyć, równie dobrze można napisać tak o private i internal ale to chyba nie o to chodzi. Aczkolwiek zgodzę się, że można nieco zmodyfikować odpowiedź, jest nieco myląca.

januszgorszyciel 07-11-2018 11:02
Thx za poprawkę z atrybutami. Zgadzam się, że to też nie jest klarowne. Sam MS dość prosto tłumaczy public i pytanie czy jest sens jakoś bardziej w to wnikać - https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/public Wyjaśniając to tak jak oni poprzez zaprzeczenie jest chyba o wiele łatwiej -'Nie ma restrykcji w dostępie do składowej' jest być może esencją :P Unikałbym w odpowiedziach zawierania informacji tak jakby to był kurs C# i/lub kopia dokumentacji. To będzie nadmiarowość informacji tutaj. Może lepiej byłoby tu właśnie odsyłać do dokumentacji, gdzie jest więcej przykładów?

alsenq 02-02-2022 01:47
Można dodawać linki do dokumentacji ale jednak to tutaj powinno być z grubsza wytłumaczone co i jak, żeby co chwila nie przeskakiwać pomiędzy stronami bo to męczące.


© 2024 - SkillsTest.pl | | Regulamin | Polityka Prywatnosci