C# Properties

C# Properties einfach erklärt

In diesem Tutorial sprechen wir über C# Properties (Eigenschaften). Als einleitender Satz lässt sich wohl am besten sagen, dass man sich Eigenschaften wie eine andere Art von Variablen vorstellen kann. Eigenschaften können Getter- und Setter Methode verwenden und werden für die objektorientierte Programmierung verwendet werden.

Entdecke das Potenzial von C# und werde ein erfahrener Programmierer! Unser exklusiver Video Intensivkurs bietet dir alles, was du brauchst, um C# wie ein Pro zu beherrschen. Lerne von erfahrenen Dozenten, arbeite dich durch interaktive Übungen und Projekte und verbessere deine Fähigkeiten in Rekordzeit. Klick jetzt hier und starte deine Reise zum C#-Experten!

Schauen wir uns zuerst mal zwei ganz normale Variable an:

public int age = 18; // Public
private string password; // Private

Die beiden Variablen weisen verschiedene Zugriffsmodifizierer auf. Die Variable age ist öffentlich verfügbar und kann daher von überall gelesen und gesetzt werden. Die Variable password ist private und kann daher nur von innerhalb der selben Klasse gelesen und gesetzt werden.

public → öffentliches lesen/schreiben

private → lesen/schreiben nur in der selben Klasse

Bis zum jetzigen Zeitpunkt sind noch keine Eigenschaften in Sicht, und das mit voller Absicht. Eigenschaften zu verstehen klappt am besten, wenn man die Verwendung versteht.

Das Problem

Mit Sicherheit kannst du dir vorstellen, dass es Felder (Variablen) gibt die man besser nicht verändern sollte. Readonly is hier das korrekte Wort. Stell dir vor du hast die folgende Klasse in deiner Anwendung:

public class Person {

   public int yearOfBirth = 1980;

   // Konstruktor
   public Person(int yearOfBirth) {
   
       this.yearhOfBirth = yearOfBirth;   

   }

}

Das Geburtsjahr ein Menschen ändert sich normalerweise nicht, daher sollte der Wert nach dem initialisieren durch den Konstruktor nicht mehr verändert werden können.

Folgenden Code ist derzeit möglich (sollte es aber nicht sein):

public class Program {
    
    public static void Main() {
    
        Person newPerson = new Person(1970); // Korrektes Geburtsjahr
        newPerson.yearOfBirth = 2125; // Fake
        newPerson.yearOfBirth = 1645; // Fake
        
        Console.WriteLine(newPerson.yearOfBirth);
    }

}

Wie können wir also verhindern, dass das öffentliche Feld yearOfBirth nicht mehr verändert werden kann? Wir könnte es natürlich auf private setzen aber dann würde die Zeile mit dem Console.WriteLine(newPerson.yearOfBirth); einen Error werfen.

Zugriffskontrolle mit C# Properties

Der korrekte Lösungsansatz ist es, yearOfBirth als eine Property zu definieren:

public class Person {

   public int YearOfBirth {get; set;}

   // Konstruktor
   public Person(int yearOfBirth) {
   
       this.YearhOfBirth = yearOfBirth;   

   }

}

Genau wie Methoden werden auch Properties groß geschrieben. Sie haben außerdem auch die geschweiften Syntax Klammern. Innerhalb der Klammern lässt sich beschreiben, wie man auf die Methode Zugreifen kann.

In dem Beispiel oben erlauben wir ein öffentliches get (holen des Wertes) und ein öffentliches set (setzen des Wertes).

Auch jetzt können wir immer noch von überall den Wert der Property YearOfBirth setzen. Wir haben also noch nichts gewonnen.

Private set

Als nächstes beschränken wir jetzt den set Zugriff mit private:

public class Person {

   public int YearOfBirth {get; private set;} // set ist auf private

   // Konstruktor
   public Person(int yearOfBirth) {
   
       this.YearhOfBirth = yearOfBirth;   

   }

}

Unser get bleibt weiterhin unverändert öffentlich aber das set wird mir private so beschränkt, dass der Wert jetzt nur noch von innerhalb der selben Klasse verändert werden kann. Damit haben wir den Status “readonly” erhalten.

Folgender Codes passiert mit dem Code (achte darauf, dass die Property groß geschrieben wird):

public class Program {
    
    public static void Main() {
    
        Person newPerson = new Person(1970); // Korrektes Geburtsjahr
        newPerson.YearOfBirth = 2125; // ERROR
        newPerson.YearOfBirth = 1645; // ERROR
        
        Console.WriteLine(newPerson.yearOfBirth); // Läuft weiterhin durch readonly
    }

}

C# Properties haben noch weitere Funktionalitäten. Du kannst einen Standardwertsetzen und anstatt get; set; zurückzugeben sogar ganze Methodenblöcke returnen. Wenn du noch mehr über Properties Wissen möchtest, dann schau mal hier.

Willst du wissen, wie du einfach und schnell zum C# Profi wirst?
PRogrammieren lernen kann einfach sein!
Overlay Image
Willst du wissen, wie du einfach und schnell zum C# Profi wirst?
PRogrammieren lernen kann einfach sein!
Overlay Image
Setze dein gelerntes Wissen in die Tat um und programmiere echte Anwendungen.
1. Tipp
1/3
Overlay Image
Setze dein gelerntes Wissen in die Tat um und programmiere echte Anwendungen.
1. Tipp
1/3
Overlay Image
Lerne wie du mit Debugging Fehler eines Programmes professionell beheben kannst.
2. Tipp
2/3
Overlay Image
Lerne wie du mit Debugging Fehler eines Programmes professionell beheben kannst.
2. Tipp
2/3
Overlay Image
Fokussiere dich beim lernen auf die richtigen Inhalte und nicht auf die Menge.
3. Tipp
3/3
Overlay Image
Fokussiere dich beim lernen auf die richtigen Inhalte und nicht auf die Menge.
3. Tipp
3/3
Overlay Image
Ja, so einfach kann es sein! Mit meinem C# Video-Intensivkurs wirst du ganz einfach zum echten C# Profi Entwickler. Möchtest du mehr dazu erfahren?
Alles in einem Kurs
Overlay Image
Ja, so einfach kann es sein! Mit meinem C# Intensivkurs für Grundlagen und Expertenwissen wirst du ganz einfach zum echten Profi Entwickler. Möchtest du mehr dazu erfahren?
Alles in einem Kurs
Overlay Image
Diese Seite verwendet Cookies. Wir können diese zur Analyse unserer Besucherdaten platzieren, um unsere Website zu verbessern, personalisierte Inhalte anzuzeigen und Ihnen ein großartiges Website-Erlebnis zu bieten. Für weitere Informationen zu den von uns verwendeten Cookies öffnen Sie die Einstellungen.
Datenschutz
IT Leismann, Inhaber: Jannick Leismann (Firmensitz: Deutschland), verarbeitet zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in der Datenschutzerklärung.
Datenschutz
IT Leismann, Inhaber: Jannick Leismann (Firmensitz: Deutschland), verarbeitet zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in der Datenschutzerklärung.