Zugriffsmodifikatoren (Spezifizierer) in C# mit Programmbeispielen

⚡ Intelligente Zusammenfassung

Zugriffsmodifizierer in C# sind Schlüsselwörter, die die Sichtbarkeit einer Klasse, Eigenschaft oder Methode festlegen und somit einschränken, welche externen Programme darauf zugreifen können. Konstruktoren initialisieren Feldwerte automatisch, sobald ein Objekt der Klasse erzeugt wird.

  • 🔐 Zur Alleinbenutzung: Der private Zugriffsmodifikator beschränkt ein Element auf dieselbe Klasse und blockiert so den Zugriff von externen Programmen.
  • 🌐 Öffentlichkeit: Der öffentliche Zugriffsmodifikator stellt eine Eigenschaft oder Methode jedem externen Programm ohne Einschränkung zur Verfügung.
  • 🛡️ Geschützt: Der geschützte Zugriffsmodifikator teilt Member nur mit Klassen, die von der aktuellen Klasse geerbt werden.
  • 📦 Intern: Der interne Zugriffsmodifikator erlaubt den Zugriff innerhalb derselben Assembly, jedoch nicht von einem externen Programm aus.
  • ???? ️ Konstrukteur: Ein Konstruktor teilt den Klassennamen, nimmt keinen Rückgabetyp entgegen und initialisiert Felder bei der Erstellung eines Objekts.
  • 🤖 KI-Unterstützung: GitHub Copilot generiert Modifikatoren und Konstruktoren, während ML.NET Klasseneigenschaften Modellmerkmalen zuordnet.

Zugriffsmodifizierer (Spezifizierer) in C#

Was ist ein Zugriffsmodifikator (Spezifizierer) in C#?

Zugriffsmodifikatoren Zugriffsmodifizierer in C# sind Schlüsselwörter, mit denen die Sichtbarkeit einer Klasseneigenschaft oder -methode definiert wird. Sie werden verwendet, wenn andere Programme nicht auf die Eigenschaften oder Methoden einer Klasse zugreifen sollen. Zugriffsmodifizierer schränken den Zugriff so ein, dass andere Programme nicht auf die Eigenschaften oder Methoden einer Klasse zugreifen können.

Es gibt 6 Arten von Zugriffsmodifikatoren in C#:

  • Private
  • Öffentliche
  • Geschützt
  • Intern
  • Intern geschützt
  • Privat geschützt

Wir lernen die wichtigsten Zugriffsmodifikatoren in C# anhand der unten erläuterten Programmbeispiele kennen.

Private Zugriffsmodifikatoren in C#

Wenn der Zugriffsmodifikator Private an eine Eigenschaft oder eine Methode angehängt wird, bedeutet dies, dass auf diese Mitglieder von keinem externen Programm aus zugegriffen werden kann.

Beispiel für einen privaten Zugriffsmodifikator

Nehmen wir ein Beispiel und sehen, was passiert, wenn wir den privaten Zugriffsmodifikator verwenden.

Lassen Sie uns den aktuellen Code in unserer Datei Tutorial.cs ändern. Ändern wir in der SetTutorial-Methode das Schlüsselwort public in private.

Modifikatoren für den privaten Zugriff

Wechseln wir nun zu unserer Program.cs-Datei. Sie werden feststellen, dass sich unter der SetTutorial-Methode eine rote Wellenlinie befindet.

Da wir die SetTutorial-Methode in unserer Tutorial-Klasse nun als privat deklariert haben, hat Visual Studio dies erkannt. Es hat dem Benutzer durch Hervorhebung mitgeteilt, dass diese Methode nun nicht mehr aus der Datei Program.cs heraus funktioniert.

Modifikator für privaten Zugriff

C#-Modifikatoren für den öffentlichen Zugriff

Wenn der öffentliche Zugriffsmodifikator entweder an eine Eigenschaft oder eine Methode angehängt wird, bedeutet dies, dass auf diese Mitglieder von jedem externen Programm aus zugegriffen werden kann. Wir haben dies bereits in unseren früheren Beispielen gesehen.

Beispiel für einen öffentlichen Zugriffsmodifikator

C#-Modifikatoren für den öffentlichen Zugriff

Da wir unsere Methoden in der Tutorial-Klasse als öffentlich definiert haben, kann über die Datei Program.cs auf sie zugegriffen werden.

Geschützte Zugriffsmodifikatoren in C#

Wenn der geschützte Zugriffsmodifikator entweder an eine Eigenschaft oder eine Methode angehängt wird, bedeutet dies, dass nur auf diese Mitglieder zugegriffen werden kann Klassen geerbt aus dem Strom Klasse. Dies wird in der Klasse „Inheritance“ näher erläutert.

Interne C#-Zugriffsmodifikatoren

Wenn ein interner Zugriffsmodifikator entweder an eine Eigenschaft oder eine Methode angehängt wird, kann auf diese Mitglieder nur von einem internen Programm, nicht aber von einem externen Programm zugegriffen werden.

C#-Konstruktor

C# Konstruktoren werden verwendet, um die Werte von Klassenfeldern zu initialisieren, wenn die entsprechenden Objekte erstellt werden. Ein Konstruktor ist eine Methode, die denselben Namen wie die Klasse hat. Wenn in einer Klasse ein Konstruktor definiert ist, stellt er die erste Methode bereit, die beim Erstellen eines Objekts aufgerufen wird. Angenommen, wir hätten eine Klasse namens Employee. Die Konstruktormethode würde auch Employee() heißen.

Zu Konstruktormethoden sind folgende wichtige Dinge zu beachten

  1. Der C#-Standardzugriffsmodifikator für den Konstruktor muss öffentlich gemacht werden.
  2. Für die Konstruktormethode sollte kein Rückgabetyp vorhanden sein.

Beispiel eines C#-Konstruktors

Sehen wir uns nun an, wie wir den Benutzer von Konstruktoren in unseren Code integrieren können. Wir werden Konstruktoren verwenden, um die Felder „TutorialID“ und „TutorialName“ auf einige Standardwerte zu initialisieren, wenn das Objekt erstellt wird.

Schritt 1) Der erste Schritt besteht darin, den Konstruktor für unsere Tutorial-Klasse zu erstellen. In diesem Schritt fügen wir den folgenden Code zur Datei Tutorial.cs hinzu.

C#-Konstruktor

Code Erläuterung:-

  1. Wir fügen zunächst eine neue Methode hinzu, die denselben Namen wie die Klasse hat. Da sie denselben Namen wie die Klasse hat, behandelt C# sie als Konstruktormethode. Wenn also die aufrufende Methode nun ein Objekt dieser Klasse erstellt, wird diese Methode standardmäßig aufgerufen.
  2. Im Tutorial-Konstruktor setzen wir den Wert von TutorialID auf 0 und TutorialName auf „Default“. Wenn also ein Objekt erstellt wird, haben diese Felder immer diese Standardwerte.

Wechseln wir nun zu unserer Datei „Program.cs“ und entfernen wir einfach die Zeile, die die SetTutorial-Methode aufruft. Das liegt daran, dass wir nur sehen wollen, wie der Konstruktor funktioniert.

C#-Konstruktor

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 Erläuterung:-

  1. Der erste Schritt besteht darin, ein Objekt für die Tutorial-Klasse zu erstellen. Dies geschieht über das Schlüsselwort „new“.
  2. Wir verwenden die GetTutorial-Methode der Tutorial-Klasse, um den TutorialName abzurufen. Dieser wird dann über die Console.WriteLine-Methode in der Konsole angezeigt.

Wenn der obige Code richtig eingegeben und das Programm ausgeführt wird, wird die folgende Ausgabe angezeigt.

Ausgang:

C#-Konstruktor

Anhand der Ausgabe können wir erkennen, dass der Konstruktor tatsächlich aufgerufen wurde und dass der Wert von TutorialName auf „Default“ gesetzt wurde.

Hinweis: Hier wird der Wert „default“ vom Konstruktor geholt.

Häufig gestellte Fragen

Wird kein Modifikator angegeben, sind Klassen- und Strukturmember standardmäßig privat und Typen der obersten Ebene intern; sie bleiben verborgen, bis Sie ihre Sichtbarkeit erweitern.

Der Parameter `protected` macht ein Element für dieselbe Klasse und alle abgeleiteten Klassen zugänglich, sogar über verschiedene Assemblys hinweg. Der Parameter `internal` macht es nur für Typen in derselben Assembly zugänglich.

Der geschützte interne Zugriff erlaubt den Zugriff aus derselben Assembly oder aus jeder abgeleiteten Klasse. Der private geschützte Zugriff ist restriktiver und erlaubt ihn nur abgeleiteten Klassen innerhalb derselben Assembly.

C# unterstützt Standard-, parametrisierte, Kopier-, statische und private Konstruktoren. Diese initialisieren die Felder eines Objekts, führen die Klasseneinrichtung einmalig aus oder kopieren die Werte eines anderen Objekts.

Ein statischer Konstruktor benötigt keine Modifikatoren oder Parameter. Er wird einmalig ausgeführt, bevor das erste Objekt erstellt oder statische Member geladen werden, und initialisiert dabei die statischen Felder.

Ja. Eine Klasse kann mehrere Konstruktoren mit unterschiedlichen Parameterlisten definieren. Der Compiler wählt denjenigen aus, der zu den an `new` übergebenen Argumenten passt.

Ja. GitHub Copilot schlägt Modifikatoren, Konstruktoren und Feldinitialisierer anhand eines Klassennamens oder Kommentars in Visual Studio vor. VS Code. RevSehen Sie sich die einzelnen vorgeschlagenen Sichtbarkeitsstufen an.

ML.NET ordnet die öffentlichen Eigenschaften einer C#-Datenklasse Modellmerkmalen und -bezeichnungen zu. Mithilfe öffentlicher Getter und Setter können diese Werte während des Trainings ausgelesen werden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: