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: