Podręcznik programowania i interfejsów Ge Aeq12an to kompletny zestaw narzędzi do tworzenia i integrowania oprogramowania w celu wspierania aplikacji, w których wykorzystywana jest technologia GE Automation. Zawiera ona szczegółowe instrukcje dotyczące tworzenia i integracji oprogramowania, jak również instrukcje dotyczące współpracy z produktami GE Automation, takimi jak sterowniki PLC, sterowniki przemysłowe i sieci. Oprogramowanie tego podręcznika jest dostarczane w postaci kodu źródłowego, a jego zastosowanie pozwala tworzyć tanie i zaawansowane aplikacje, które umożliwiają automatyzację procesów przemysłowych.
Ostatnia aktualizacja: Podręcznik programowania i interfejsów Ge Aeq12an
Czym jest interfejs użytkownika (UI)? Mówiąc najprościej, jest to ta część aplikacji, oprogramowania, która jest odpowiedzialna za interakcję z użytkownikiem.
Na czym polega projektowanie interfejsu użytkownika?
Mówi się, że dobrze zaprojektowany Interfejs jest „niewidoczny”. Oczywiście nie chodzi o jego wizualną nieobecność, raczej o to, że jest postrzegany jako integralne, pomocne, poręczne narzędzie.
Temat projektowania Interfejsu jest złożony. Nie sposób jest go opisać w jednym, czy dwóch artykułach.
O projektowaniu Interfejsu napisano wiele książek (np. "Podstawy projektowania interfejsów użytkownika"), przygotowano wielogodzinne szkolenia, dlatego ten artykuł to tylko wprowadzenie do tematyki projektowania Interfejsu. Ale od czegoś trzeba zacząć! ;-)
Do czego służy Interfejs Użytkownika?
Interfejs służy użytkownikowi produktu cyfrowego do wchodzenia w interakcję z oprogramowaniem. Jest narzędziem komunikacji między człowiekiem a urządzeniem. Służy do sterowania, wykonywania zadań, osiągania celów.
Pisząc o Interfejsie Użytkownika najczęściej mamy na myśli Graficzny Interfejs (GUI - Graphical User Interface). Nie jest on jednak jedynym sposobem komunikacji człowieka z oprogramowaniem, urządzeniem.
Istnieją Interfejsy oparte na przykład na wierszach poleceń (CLI - Command Line Interface), tekście (TUI - Text-Based User Interface) oraz coraz częściej na komunikacji za pomocą głosu (VUI - Voice User Interface).
Graficzny Interfejs użytkownika jest zasadniczym elementem każdego oprogramowania – od programów desktopowych po aplikacje webowe i mobilne. Nie można jednak zapominać, że jego rolą jest nie tylko służyć celom użytkowników, ale także ma pomagać realizować cele biznesowe.
„Niewidoczność” Interfejsy zawdzięczają estetyce, zintegrowaniu z pozostałymi elementami aplikacji, adekwatnością poszczególnych funkcji, sposobu działania do potrzeb i oczekiwań użytkowników.
UI Design, którego potrzebuje Twój biznes!
Jaki powinien być projekt Interfejsu graficznego?
Odpowiedzi na to pytanie zapewne jest tyle, ilu jest samych projektantów Interfejsów. Ale to nie ich preferencje, oczekiwania mają kluczowe znaczenie.
Interfejsy powinny – i w większości przypadków są – zorientowane na swoich użytkowników.
W praktyce oznacza to konieczność ich tworzenia na podstawie rzetelnych, powtarzalnych badań, które mają określić preferencje, oczekiwania użytkowników docelowych.
Najczęściej wykorzystywanymi metodami badawczymi w projektowaniu Interfejsów są bezpośrednie obserwacje użytkowników używających prototypów oraz wywiady.
Stworzenie projektu Interfejsu nie jest kwestią prostą, o czym świadczyć może już sama lista oczekiwań formułowanych pod jego adresem. Z punktu widzenia użytkownika powinien być w pierwszym rzędzie:
- wydajny
- dostępny
- intuicyjny
- atrakcyjny wizualnie, estetyczny - Interfejsy estetyczne są postrzegane jako bardziej użyteczne (Efekt Estetycznej Funkcjonalności - Aesthetic Usability Effect)
- funkcjonalny
- niezawodny
- pomocny
- podręczny
- minimalizujący wysiłek poznawczy, redukujący energię psychiczną konieczną do nauki jego obsługi oraz użytkowania.
Z czego składa się Interfejs graficzny?
Interfejsy znacząco będą się różnić w zależności od urządzenia, rodzaju produktu cyfrowego, jego złożoności. Będą się różnić w zależności od ilości funkcjonalności, celów, jakim mają służyć.
Różnią się między sobą także ze względu na samych użytkowników. Przykładowo, Interfejsy aplikacji dla seniorów, osób niedowidzących, dzieci będą inaczej projektowane niż dla osób nieposiadających różnego rodzaju ograniczeń.
Zasadniczo elementy składowe Interfejsów można przyporządkować do jednej z czterech kategorii:
Projektowanie Interfejsów użytkownika - Atomic Design
Zdecydowanie wolimy podejście do projektowania w duchu Atomic Design, zgodnie z którym Interfejs składa się z komponentów.
Komponenty te realizują, wykonują określone działania, odpowiadają na określone potrzeby użytkowników i systemu. Np. pole tekstowe służy do wprowadzenia określonej danej, przykładowo - imienia.
Stworzone przez Brada Frosta podejście do projektowania Interfejsów pozwala je tworzyć w sposób o wiele bardziej metodyczny, uporządkowany i przemyślany. Atomic Design pozwala w łatwiejszy sposób tworzyć hierarchię elementów.
Zainspirowany chemią i atomami Brad Frost zaproponował metodę, która odwzorowuje strukturę, relacje, zależności, jakie obserwujemy w świecie materialnym.
By stworzyć bardziej złożony układ, organizm, przedmiot konieczne są elementy z niższych, bardziej podstawowych poziomów.
Stąd też wzięła się nazwa. Atomy stanowią podstawowy budulec świata materialnego. Z aplikacjami webowymi, mobilnymi jest dokładnie tak samo.
Źródło: Brad Frost
Metodologia Atomic Design zakłada, że projektowanie interfejsu graficznego obejmuje pięć etapów. Trzy najbardziej podstawowe są stworzone przez analogię do związków chemicznych. Zatem możemy w nim wyróżnić:
W kontekście Interfejsów atomy to na przykład czcionki, przyciski. Mając stworzone najmniejsze elementy, możemy przejść na wyższy poziom – cząsteczek. To moment, w którym pojedyncze atomy grupujemy i tworzymy z nich bardziej złożoną strukturę, która posiada własne cechy.
Z cząsteczek stworzymy jeszcze bardziej złożoną konstrukcję – organizmów. Mając stworzony organizm mamy tak naprawdę stworzony komponent, który może być wielokrotnie wykorzystywany w - szablonach. Z szablonów będziemy tworzyć - strony.
Największą zaletą metodologii Atomic Design jest prostota, wygoda, przejrzystość oraz skupienie się na strukturze. Co więcej, Atomic Design zapewnia o wiele większą spójność Interfejsom (o problemie spójności będę pisał w drugiej części tego artykułu).
Projektowanie Interfejsów graficznych użytkownika - zasady
W procesie projektowania Interfejsów projektanci posiłkują się wieloma zasadami. Ich celem jest osiągnięcie możliwie najlepszego efektu.
Chodzi o spełnienie większości, najlepiej wszystkich wyżej wymienionych oczekiwań. Czy zawsze się to udaje? No właśnie różnie z tym bywa. Dlatego prototypy Interfejsów poddaje się analizom i badaniom.
Pisaliśmy już o analizie heurystycznej Jakoba Nielsena, która jest bardzo przydatna do oceny użyteczności Interfejsów. Pisaliśmy także o 8 Złotych Zasadach Bena Shneidermana, które również bywają bardzo pomocne w projektowaniu Interfejsów.
Choć bardzo wpływowe i ogólnie szanowane nie są to jedyne zasady, jakie należy uwzględnić, projektując Interfejsy. Uzupełnimy je o kolejne podejście - mianowicie o propozycję Lucy Lockwood oraz Larry Constantine.
Następnie przedstawimy kolejne zasady, które są powszechnie stosowane przez projektantów. Projektowanie interfejsu aplikacji jest dzięki ich stosowaniu o wiele bardziej efektywne.
Zasady Projektowania Interfejsu Użytkownika według Lucy Lockwood i Larry Constantine (Lucy Lockwood's 6 Principles of User Interface Design)
Propozycja tych autorów wywodzi się z podejścia do projektowania Interfejsów zorientowanego na użytkowanie. Projektowanie zorientowane na użytkowanie oparte jest na trzech modelach, procesach:
Mówiąc nieco inaczej, chodzi o poznanie intencji użytkownika oraz jego typowych wzorów użytkowania. Mając taką podstawę, autorzy wypracowali 6 Zasad Projektowania Interfejsów Użytkownika. Oto one:
Zasada Struktury
Odnosi się do powiązań elementów w interfejsie, ich architektury, sposobu organizacji. Elementy powiązane ze sobą powinny być uporządkowane razem i wyraźnie odseparowane od pozostałych elementów. Połączenia i separacje powinny tworzyć wyraźną, czytelną hierarchię.
Połączenia i podziały powinny być także tworzone w sposób spójny, konsekwentny i rozpoznawalny (znajomy) dla użytkownika.
Innymi słowy, elementy o podobnych funkcjach, zakresach działania powinny mieć podobny wygląd i podobny sposób działania. Funkcja elementów nie powinna się zmieniać, podobnie ich położenie.
Zasada Prostoty
Interfejs powinien ułatwiać wykonywanie prostych, typowych zadań. Powinien komunikować się z użytkownikiem za pomocą jasnego i równie prostego języka.
Zadania bardziej złożone powinny być dzielone na prostsze, krótsze, łatwiejsze do wykonania. Interfejs powinien cechować się przejrzystością i zawierać tylko te elementy, które są najistotniejsze.
Zasada Widoczności
Interfejs powinien zawierać tylko te opcje, które są niezbędne do wykonania danego zadania. Korzyścią płynącą z zastosowania tej zasady ma być wspieranie stanu skupienia i unikanie rozpraszania użytkownika za pomocą niepotrzebnych informacji. Tylko ważne, niezbędne informacje i funkcjonalności powinny być widoczne i eksponowane.
Zasada Informacji Zwrotnej
Interfejs za pomocą komunikatów jasnych, konkretnych, zwięzłych powinien dostarczać użytkownikom informacji zwrotnych, dotyczących najważniejszych zmian, wyjątków, błędów, stanów.
Zasada Tolerancji
Projektowanie Interfejsów powinno także uwzględniać możliwość popełnienia błędu przez użytkownika.
Przeciwdziałać powinien niepożądanym zmianom poprzez możliwość poprawiania i ponownego zainicjowania danych działań bez ponoszenia kosztów (np. wykonania ponownie niektórych prac).
Wszędzie, gdzie to tylko możliwe powinna obowiązywać zasada tolerowania dopuszczalnych błędów. Odpowiednio zaprojektowany Interfejs powinien także przeciwdziałać błędom za pomocą podpowiedzi, wskazówek oraz zwiększać poczucie bezpieczeństwa użytkownika.
Zasada Ponownego Wykorzystania
Odnosi się do unikania powielania elementów Interfejsu, informacji oraz uspójniania Interfejsu poprzez unikanie tworzenia nowych elementów do wykonywania podobnych zadań. Mniejsza ilość elementów ułatwia naukę oraz zapamiętanie funkcji poszczególnych elementów.
Wniosek płynący z powyższych zasad jest czytelny.
W procesie projektowania Interfejsu należy unikać tworzenia niepotrzebnych funkcji, zminimalizować obciążenie poznawcze, należy przewidywać zachowania, upraszczać procesy.
Dobrze zaprojektowany Interfejs nie odwraca uwagi i pozwala się skupić tylko na wykonywanym zadaniu. Spójność można osiągać także poprzez tworzenie wspólnych elementów do wykonywania różnych zadań.
Projektowanie Interfejsów - sprawdzone wzorce projektowe
Projektowanie Interfejsów jest problemem złożonym, wymagającym przemyślenia wielu kwestii. Do powyższych zasad konieczne jest dodanie kolejnych.
Zasada Stanu Zerowego Interfejsu
Pierwsze wrażenie jest niezwykle istotne w ocenie, nastawieniu i odczuciach, jakich użytkownicy nabierają w początkowym kontakcie z Interfejsem.
Jest także okazją do zapoznania userów z najważniejszymi funkcjonalnościami, ułatwieniami, korzyściami.
Projektowanie Stanu Zerowego, a więc stanu, w którym użytkownik jest witany, zaznajomiony, oswajany ma niezwykłe znaczenie.
Stan Zerowy pełni rolę “gospodarza”, który wprowadza użytkownika “na pokład” i oddaje mu “stery” nad Interfejsem (Boarding).
Dzięki temu możliwe jest uniknięcie wielu problemów, frustracji, jakie mają miejsce w trakcie nauki obsługi interfejsu. Przybliżenie użytkownikom reguł pozwala zyskać ich sympatię i wdzięczność.
Zasada Redukcji Obciążenia Poznawczego
Wspominałem już o niej w tym artykule. Warto jednak ją powtarzać, bowiem jest niezwykle istotna. Jej sens można sprowadzić do uczynienia Interfejsu jak najmniej:
Korzystanie z Interfejsu nie może być doświadczeniem zbliżonym do rozwiązywania łamigłówki. Powinno być możliwie intuicyjne, wręcz bezrefleksyjne.
Zasada Ochrony i Korygowania Pracy Użytkownika
Projektując Interfejsy, musimy także zadbać o zapewnienie komfortu zachowania raz wykonanej pracy. Nic bardziej nie zniechęca niż konieczność ponownego wprowadzania danych, potwierdzania danych, wyborów.
W szczególności istotne jest to w sytuacjach błędów popełnionych przez użytkownika, bądź system. “Karą” za popełniony błąd nie może być utrata wykonanej pracy.
Interfejs powinien pozwalać także korygować pracę. Powracać do wcześniejszych stanów, kroków. Wiąże się to oczywiście z Zasadą Tolerancji Lucy Lockwood.
Zasada Zrozumiałości Działań
Nauka obsługi Interfejsu powinna być możliwie szybka, bezproblemowa i przyjemna. Interfejs powinien zaznajamiać za pomocą konkretnych, jednoznacznych, prostych, zrozumiałych odpowiedzi na najbardziej kluczowe pytania:
Zasada Personalizacji (Konfiguracji Interfejsu) oraz Zapewnienia Maksymalnej Kontroli
Współczesne Interfejsy coraz częściej muszą pozwalać użytkownikom na dostosowanie ustawień, parametrów, stanów do indywidualnych potrzeb.
Konfigurowalność Interfejsu zwiększa poczucie kontroli, które jest kluczowe w kwestii poczucia komfortu, satysfakcji, użyteczności.
Poczucie kontroli zapewnia i wzmacnia przede wszystkim:
Zasada Efektywności
Efektywność Interfejsu można określać za pomocą subiektywnych odczuć użytkowników, ale także za pomocą mierzalnych wskaźników. Na przykład szybkości wykonywania działań, szybkości ładowania się podstrony, szybkości dotarcia do celu (ilość koniecznych kliknięć, ekranów, podstron).
Zasada Elastyczności
W tej zasadzie znajdziemy echa poprzednich. Na marginesie dodajmy, że większość zasad jest względem siebie komplementarna. Uzupełniają się. Podobnie jest z Zasadą Elastyczności, w której najistotniejsze jest zaprojektowanie Interfejsu, który jest:
Podsumowanie - podstawy projektowania interfejsów użytkownika
- Interfejs pozwala na interakcję użytkownika z oprogramowaniem.
- Dobrze zaprojektowany Interfejs postrzegany jest jako narzędzie „niewidoczne”, jednocześnie pomocne i poręczne.
- Interfejsy muszą spełniać szereg oczekiwań i cechować się m. in. wydajnością, dostępnością, atrakcyjnością wizualną, funkcjonalnością, niezawodnością.
- Interfejsy tworzone są na podstawie licznych zasady, wzorców, podejść (np. Atomic Design)
- Propozycja Lucy Lockwood i Larry Constantine wywodzi się z podejścia do projektowania Interfejsów zorientowanego na użytkowanie.
- Istotą tego podejścia są role, zadania oraz sposób organizacji Interfejsu.
- Projektując Interfejsy, należy unikać tworzenia niepotrzebnych funkcji, zminimalizować obciążenie poznawcze.
- Bardzo istotne jest także przewidywanie zachowań oraz upraszczanie procesów.
- Do najważniejszych – choć nie jedynych – zasad należy zasada: Elastyczności, Efektywności, Personalizacji, Zapewnienia Maksymalnej Kontroli, Zrozumiałości Działań, Ochrony i Korygowania Pracy Użytkownika, Redukcji Obciążenia Poznawczego, Stanu Zerowego Interfejsu.
Jaki jest domyślny modyfikator dostępu dla klas, metod, członków, konstruktorów, delegatów i interfejsów?
Odpowiedzi:
Domyślny dostęp do wszystkiego w języku C # to „najbardziej ograniczony dostęp, jaki można zadeklarować dla tego członka”.
Na przykład:
namespace MyCompany{class Outervoid Foo() {}class Inner {}}}
jest równa
internal class Outerprivate void Foo() {}private class Inner {}Jedynym rodzajem wyjątku jest ograniczenie jednej części właściwości (zwykle ustawiającej) niż deklarowana dostępność samej właściwości:
public string Nameget { ... }private set { ... } // This isn't the default, have to do it explicitlyOto, co mówi specyfikacja C # 3. 0 (sekcja 3. 5. 1):
W zależności od kontekstu, w którym odbywa się deklaracja członka, dozwolone są tylko niektóre typy deklarowanej dostępności. Ponadto, gdy deklaracja członka nie zawiera żadnych modyfikatorów dostępu, kontekst, w którym deklaracja ma miejsce, określa domyślną deklarowaną dostępność.
- Przestrzenie nazw domyślnie mają publicznie zadeklarowaną dostępność. Żadne modyfikatory dostępu nie są dozwolone w deklaracjach przestrzeni nazw.
- Typy zadeklarowane w jednostkach kompilacji lub przestrzeniach nazw mogą mieć publiczną lub wewnętrzną deklarowaną dostępność i domyślnie wewnętrzną deklarowaną dostępność.
- Członkowie klasy mogą mieć dowolny z pięciu rodzajów deklarowanej dostępności i domyślnie deklarowaną dostępność prywatną. (Należy zauważyć, że typ zadeklarowany jako członek klasy może mieć dowolny z pięciu rodzajów deklarowanej dostępności, podczas gdy typ zadeklarowany jako członek przestrzeni nazw może mieć tylko publiczną lub wewnętrzną deklarowaną dostępność).
- Członkowie struktury mogą mieć publicznie, wewnętrznie lub prywatnie zadeklarowaną dostępność i domyślnie prywatną deklarowaną dostępność, ponieważ struktury są domyślnie zapieczętowane. Elementy struktury wprowadzone w strukturze (tj. Nie dziedziczone przez tę strukturę) nie mogą mieć zabezpieczonej ani chronionej wewnętrznej deklarowanej dostępności. (Należy zauważyć, że typ zadeklarowany jako członek struktury może mieć zadeklarowaną dostępność publiczną, wewnętrzną lub prywatną, podczas gdy typ zadeklarowany jako członek przestrzeni nazw może mieć tylko zadeklarowaną dostępność publiczną lub wewnętrzną).
- Członkowie interfejsu domyślnie mają publicznie zadeklarowaną dostępność. Żadne modyfikatory dostępu nie są dozwolone w deklaracjach członków interfejsu.
- Członkowie wyliczenia domyślnie mają publicznie zadeklarowaną dostępność. Żadne modyfikatory dostępu nie są dozwolone w deklaracjach członków wyliczenia.
(Należy zauważyć, że typy zagnieżdżone będą znajdować się pod częściami „członków klasy” lub „członków struktury” - i dlatego są domyślnie widoczne dla prywatności).
top level class: internalmethod: privatemembers (unless an interface or enum): private (including nested classes)members (of interface or enum): publicconstructor: private (note that if no constructor is explicitly defined, a public default constructor will be automatically defined)delegate: internalinterface: internalexplicitly implemented interface member: public! Krótka odpowiedź: minimalny możliwy dostęp (por. Odpowiedź Jona Skeeta).
Długa odpowiedź:
Nie zagnieżdżone typy, wyliczanie i delegowanie dostępu ( może mieć tylko dostęp wewnętrzny lub publiczny)
| Default | Permitted declared accessibilities------------------------------------------------------------------namespace | public | none (always implicitly public)enum | public | none (always implicitly public)interface | internal | public, internalclass | internal | public, internalstruct | internal | public, internaldelegate | internal | public, internal
Dostępność typu zagnieżdżonego i członków
interface | public | noneclass | private | All¹struct | private | public, internal, private²delegate | private | All¹constructor | private | All¹interface member | public | none (always implicitly public)method | private | All¹field | private | All¹user-defined operator| none | public (must be declared public)
¹ Wszystkie === publiczne, chronione, wewnętrzne, prywatne, chronione wewnętrzne
² struktury nie mogą dziedziczyć po strukturach lub klasach (chociaż mogą, interfejsy), dlatego chroniony nie jest poprawnym modyfikatorem
Dostępność typu zagnieżdżonego zależy od jego domeny dostępności, która jest określona zarówno przez deklarowaną dostępność członka, jak i domenę dostępności typu zawierającego bezpośrednio. Domena dostępności typu zagnieżdżonego nie może jednak przekraczać domeny typu zawierającego.
Uwaga: CIL ma również opcję chronioną i wewnętrzną (w przeciwieństwie do istniejącej chronionej lub wewnętrznej), ale o ile wiem, nie jest obecnie dostępna do użycia w języku C #.
Widzieć:
http://msdn. aspx
(Man I love Microsoft URIs... )
Spójrz na Modyfikatory dostępu (Podręcznik programowania w języku C #)
Dostępność klasy i struktury
Klasy i struktury zadeklarowane bezpośrednio w przestrzeni nazw (innymi słowy, które nie są zagnieżdżone w innych klasach lub strukturach) mogą być publiczne lub wewnętrzne. Wewnętrzny jest domyślny, jeśli nie określono modyfikatora dostępu.
Elementy struktury, w tym zagnieżdżone klasy i struktury, można zadeklarować jako publiczne, wewnętrzne lub prywatne. Członkowie klasy, w tym zagnieżdżone klasy i struktury, mogą być publiczni, chronieni wewnętrznie, chronieni, wewnętrzni, prywatni chronieni lub prywatni. Poziom dostępu dla członków klas i struktur, w tym klas zagnieżdżonych i struktur, jest domyślnie prywatny. Prywatne typy zagnieżdżone nie są dostępne spoza typu zawierającego.
Klasy pochodne nie mogą mieć większej dostępności niż ich typy podstawowe. Innymi słowy, nie możesz mieć publicznej klasy B, która pochodzi z wewnętrznej klasy A. Gdyby to było dozwolone, spowodowałoby to upublicznienie A, ponieważ wszyscy chronieni lub wewnętrzni członkowie A są dostępni z klasy pochodnej.
Możesz włączyć określone inne zespoły, aby uzyskać dostęp do typów wewnętrznych za pomocą InternalsVisibleToAttribute
. Aby uzyskać więcej informacji, zobacz Zespoły znajomych.
Dostępność członka klasy i struktury
Członkowie klasy (w tym zagnieżdżone klasy i struktury) można zadeklarować za pomocą dowolnego z sześciu rodzajów dostępu. Elementy struktury nie mogą być deklarowane jako chronione, ponieważ struktury nie obsługują dziedziczenia.
Zwykle dostępność członka nie jest większa niż dostępność typu, który go zawiera. Jednak członek publiczny klasy wewnętrznej może być dostępny spoza zestawu, jeśli członek implementuje metody interfejsu lub zastępuje metody wirtualne zdefiniowane w publicznej klasie bazowej.
Typ dowolnego elementu będącego polem, właściwością lub zdarzeniem musi być co najmniej tak samo dostępny, jak sam element. Podobnie typ zwracany i typy parametrów dowolnego elementu będącego metodą, indeksatorem lub delegatem muszą być co najmniej tak samo dostępne, jak sam element członkowski. Na przykład nie możesz mieć publicznej metody M, która zwraca klasę C, chyba że C jest również publiczna. Podobnie nie można mieć chronionej właściwości typu A, jeśli A jest zadeklarowane jako prywatne.
Operatory zdefiniowane przez użytkownika muszą zawsze być deklarowane jako publiczne i statyczne. Aby uzyskać więcej informacji, zobacz Przeciążenie operatora.
Finalizatory nie mogą mieć modyfikatorów dostępności.
Inne rodzaje
Interfejsy zadeklarowane bezpośrednio w przestrzeni nazw mogą być zadeklarowane jako publiczne lub wewnętrzne i, podobnie jak klasy i struktury, interfejsy mają domyślny dostęp wewnętrzny. Członkowie interfejsu są zawsze publiczni, ponieważ celem interfejsu jest umożliwienie innym typom dostępu do klasy lub struktury. Do elementów interfejsu nie można stosować żadnych modyfikatorów dostępu.
Członkowie wyliczenia są zawsze publiczni i nie można stosować żadnych modyfikatorów dostępu.
Delegaci zachowują się jak klasy i struktury. Domyślnie mają dostęp wewnętrzny, gdy są zadeklarowane bezpośrednio w przestrzeni nazw, a dostęp prywatny po zagnieżdżeniu.
Klasa jest domyślnie Wewnętrzna.
Domyślnie interfejs jest wewnętrzny.
Członkowie interfejsu są domyślnie publiczni. (Interfejsy nie pozwalają nam określić żadnego rodzaju dostępu do jego członków).
Uwaga: Jeśli spróbujesz podać dowolny specyfikator dostępu do członków interfejsu, wyświetli się błąd kompilacji.
Struktura jest domyślnie Wewnętrzna.
Chciałbym dodać link do dokumentacji. Sprawdź więcej szczegółów tutaj.
Najprostsza odpowiedź jest następująca.....
Wszyscy członkowie w C # zawsze domyślnie korzystają z MOŻLIWEGO dostępnego modyfikatora.
Dlatego wszystkie klasy najwyższego poziomu w zestawie są domyślnie „wewnętrzne”, co oznacza, że są publiczne dla zestawu, w którym się znajdują, ale są prywatne lub wykluczone z dostępu do zewnętrznych zestawów. Jedyną inną opcją dla klasy najwyższego poziomu jest publiczna, która jest bardziej dostępna. W przypadku typów zagnieżdżonych wszystko jest prywatne, z wyjątkiem kilku rzadkich wyjątków, takich jak elementy wyliczeń i interfejsy, które mogą być tylko publiczne. Kilka przykładów. W przypadku klas i interfejsów najwyższego poziomu wartości domyślne to:
klasa Animal taka sama jak klasa wewnętrzna Animal
interfejs Animal taki sam jak interfejs publiczny Animal
W przypadku zagnieżdżonych klas i interfejsów (typy wewnętrzne) wartości domyślne to:
klasa Animal taka sama jak klasa prywatna Animal
interfejs Animal taki sam jak prywatny interfejs Animal
Jeśli po prostu założysz, że domyślna jest zawsze najbardziej prywatna, nie musisz używać akcesoriów, dopóki nie musisz zmienić domyślnej. Łatwy.
Wewnętrzny jest domyślnym modyfikatorem
Poziom przestrzeni nazw: internal
Poziom typu: private