Modyfikatory dostępu (specyfikatory) w języku C# z przykładami programów

⚡ Inteligentne podsumowanie

Modyfikatory dostępu w języku C# to słowa kluczowe, które ustawiają widoczność klasy, właściwości lub metody, ograniczając dostęp do nich programów zewnętrznych. Konstruktory automatycznie inicjują wartości pól przy każdym utworzeniu obiektu klasy.

  • 🔐 Private: Modyfikator dostępu prywatnego ogranicza członka do tej samej klasy, blokując dostęp do niego z poziomu dowolnego programu zewnętrznego.
  • 🌐 Publiczny: Modyfikator dostępu publicznego udostępnia właściwość lub metodę dowolnemu programowi zewnętrznemu bez ograniczeń.
  • 🛡️ Chroniony: Modyfikator chronionego dostępu współdzieli elementy tylko z klasami odziedziczonymi z klasy bieżącej.
  • 📦 Wewnętrzny: Modyfikator dostępu wewnętrznego pozwala na dostęp w obrębie tego samego zestawu, ale nie z poziomu programu zewnętrznego.
  • 🏗️. Budowniczy: Konstruktor współdzieli nazwę klasy, nie zwraca żadnego typu i inicjuje pola podczas tworzenia obiektu.
  • 🤖 Pomoc AI: GitHub Copilot tworzy szkielety modyfikatorów i konstruktorów, podczas gdy ML.NET mapuje właściwości klasy na cechy modelu.

Modyfikatory dostępu (specyfikatory) w języku C#

Co to jest modyfikator dostępu (specyfikator) w języku C#?

Modyfikatory dostępu Specyfikatory dostępu w języku C# to słowa kluczowe używane do definiowania widoczności właściwości lub metod klasy. Są one używane, gdy nie chcesz, aby inne programy widziały właściwości lub metody klasy. Modyfikatory dostępu ograniczają dostęp, uniemożliwiając innym programom zobaczenie właściwości lub metod klasy.

W języku C# istnieje 6 typów modyfikatorów dostępu:

  • Prywatne
  • Publiczne
  • Chroniony
  • Wewnętrzne
  • Chronione wewnętrzne
  • Prywatna ochrona

Dowiemy się o głównych modyfikatorach dostępu w C# na przykładach programów, jak wyjaśniono poniżej.

Modyfikatory dostępu prywatnego w C#

Gdy modyfikator dostępu prywatnego jest dołączony do właściwości lub metody, oznacza to, że do tych elementów nie można uzyskać dostępu z żadnego programu zewnętrznego.

Przykład modyfikatora dostępu prywatnego

Weźmy przykład i zobaczmy, co się stanie, gdy użyjemy modyfikatora dostępu prywatnego.

Zmodyfikujmy bieżący kod w naszym pliku Tutorial.cs. W metodzie SetTutorial zmieńmy słowo kluczowe public na private.

Modyfikatory dostępu prywatnego

Przejdźmy teraz do naszego pliku Program.cs. Zauważysz, że pod metodą SetTutorial znajduje się czerwona falista linia.

Ponieważ zadeklarowaliśmy metodę SetTutorial jako prywatną w naszej klasie Tutorial, Visual Studio to wykryło. Poinformowało użytkownika, podświetlając ją, że teraz ta metoda nie będzie działać z pliku Program.cs.

Modyfikator dostępu prywatnego

Modyfikatory dostępu publicznego C#

Gdy modyfikator dostępu publicznego jest dołączony do właściwości lub metody, oznacza to, że dostęp do tych elementów można uzyskać z dowolnego programu zewnętrznego. Widzieliśmy to już w naszych wcześniejszych przykładach.

Przykład modyfikatora dostępu publicznego

Modyfikatory dostępu publicznego C#

Ponieważ w klasie Tutorial zdefiniowaliśmy nasze metody jako publiczne, dostęp do nich można uzyskać z pliku Program.cs.

Chronione modyfikatory dostępu w C#

Gdy modyfikator dostępu chronionego jest dołączony do właściwości lub metody, oznacza to, że dostęp do tych elementów członkowskich można uzyskać tylko za pomocą klasy dziedziczone z prądu klasa. Zostanie to wyjaśnione bardziej szczegółowo w klasie Dziedziczenie.

Modyfikatory dostępu wewnętrznego C#

Gdy modyfikator dostępu wewnętrznego jest dołączony do właściwości lub metody, dostęp do tych elementów członkowskich może uzyskać tylko program wewnętrzny, ale nie program zewnętrzny.

Konstruktor C#

C# Konstruktory służą do inicjowania wartości pól klas podczas tworzenia odpowiadających im obiektów. Konstruktor to metoda, która ma taką samą nazwę jak nazwa klasy. Jeśli w klasie zdefiniowany jest konstruktor, udostępni on pierwszą metodę wywoływaną podczas tworzenia obiektu. Załóżmy, że mamy klasę o nazwie Pracownik. Metoda konstruktora będzie również nosiła nazwę Employee().

Należy zwrócić uwagę na następujące kluczowe kwestie dotyczące metod konstruktora

  1. Domyślny modyfikator dostępu C# dla konstruktora musi być publiczny.
  2. Metoda konstruktora nie powinna zwracać typu zwracanego.

Przykład konstruktora C#

Zobaczmy teraz, jak możemy włączyć użytkownika konstruktorów do naszego kodu. Użyjemy konstruktorów do zainicjowania pól TutorialID i TutorialName do niektórych wartości domyślnych podczas tworzenia obiektu.

Krok 1) Pierwszym krokiem jest utworzenie konstruktora dla naszej klasy Tutorial. W tym kroku dodamy poniższy kod do pliku Tutorial.cs.

Konstruktor C#

Code Wyjaśnienie:-

  1. Najpierw dodajemy nową metodę, która ma taką samą nazwę jak nazwa klasy. Ponieważ ma taką samą nazwę jak klasa, C# traktuje ją jako metodę konstruktora. Zatem teraz, gdy metoda wywołująca utworzy obiekt tej klasy, metoda ta zostanie wywołana domyślnie.
  2. W konstruktorze Tutorial ustawiamy wartość TutorialID na 0, a TutorialName na „Default”. Zatem za każdym razem, gdy tworzony jest obiekt, pola te zawsze będą miały wartości domyślne.

Przejdźmy teraz do naszego pliku Program.cs i po prostu usuńmy linię wywołującą metodę SetTutorial. Dzieje się tak, ponieważ chcemy po prostu zobaczyć, jak działa konstruktor.

Konstruktor C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  public int TutorialID; 
  public string TutorialName;
  
  public Tutorial()
  {
   TutorialID=0;
   TutorialName="Default";
  }
  public void SetTutorial(int pID,string pName) 
  {
   TutorialID=pID;
   TutorialName=pName;
  }
  public String GetTutorial()
  {
   return TutorialName;
  }
  
  static void Main(string[] args) 
  {
   Tutorial pTutor=new Tutorial();
    
   Console.WriteLine(pTutor.GetTutorial());
    
   Console.ReadKey(); 
  }
 }
}

Code Wyjaśnienie:-

  1. Pierwszym krokiem jest utworzenie obiektu dla klasy Tutorial. Odbywa się to za pomocą słowa kluczowego „nowy”.
  2. Używamy metody GetTutorial klasy Tutorial, aby uzyskać TutorialName. Następnie jest on wyświetlany na konsoli za pomocą metody Console.WriteLine.

Jeżeli powyższy kod zostanie wpisany poprawnie i program zostanie uruchomiony, wyświetlony zostanie następujący komunikat.

Wyjście:

Konstruktor C#

Z danych wyjściowych wynika, że ​​konstruktor rzeczywiście został wywołany i że wartość TutorialName została ustawiona na „Default”.

Uwaga: Tutaj wartość „domyślna” jest pobierana z konstruktora.

FAQ

Jeżeli nie określono żadnego modyfikatora, elementy klasy i struktury domyślnie są prywatne, a typy najwyższego poziomu — wewnętrzne, pozostając ukryte, dopóki nie zwiększysz ich widoczności.

Opcja „Protected” udostępnia element tej samej klasie i dowolnej klasie pochodnej, nawet w różnych zestawach. Opcja „Internal” udostępnia go tylko typom w tym samym zestawie.

Tryb „protected internal” zezwala na dostęp z tego samego zestawu lub dowolnej klasy pochodnej. Tryb „private protected” jest bardziej rygorystyczny i zezwala tylko na dostęp do klas pochodnych w obrębie tego samego zestawu.

C# obsługuje konstruktory domyślne, sparametryzowane, kopiujące, statyczne i prywatne. Inicjują one pola obiektu, uruchamiają konfigurację klasy jednorazowo lub klonują wartości innego obiektu.

Konstruktor statyczny nie przyjmuje żadnych modyfikatorów ani parametrów. Jest uruchamiany jednokrotnie, przed utworzeniem pierwszego obiektu lub załadowaniem elementów statycznych, inicjując pola statyczne.

Tak. Klasa może definiować kilka konstruktorów z różnymi listami parametrów. Kompilator wybiera ten, który pasuje do argumentów przekazanych do new.

Tak. GitHub Copilot sugeruje modyfikatory, konstruktory i inicjatory pól z nazwy klasy lub komentarza w programie Visual Studio i VS Code. RevZobacz każdy sugerowany poziom widoczności.

ML.NET mapuje publiczne właściwości klasy danych C# na cechy i etykiety modelu. Publiczne metody getter i setter pozwalają na odczyt tych wartości podczas trenowania.

Podsumuj ten post następująco: