Eigenschaften in C#?
Hallo,
Ich komme aus der vba Ecke und habe gerade mein erstes C# Programm geschrieben. Wenn man zahlreiche Videos zu Klassen und Eigenschaften im Internet anschaut wird das ganz gut erklärt. Aber ich brauche in meiner Klasse keinen Zugriff von außen, da ich nur zwei Arrays aus Dateien einlesen und diese dann mit einer in der Klasse zur Verfügung gestellten Public Methode verarbeite. Jetzt stellt sich mir die Frage, ob es ein gute Vorgehensweise ist nur private Variablen zu verwenden, die ich mittels dem Konstruktor befüllen lassen und dann diese Variablen intern verwende oder ob es besser wäre Eigenschaften zu erzeugen und diese zu verwenden.
Was ist eigentlich generell der best practise: innerhalb der Klasse generell Eigenschaften in den Methoden darin zu verwenden oder die private Variable dahinter?
Vielen Dank für eure Antworten.
Dane
1 Antwort
Jetzt stellt sich mir die Frage, ob es ein gute Vorgehensweise ist nur private Variablen zu verwenden (...)
Für deinen Fall wäre das vollkommen ausreichend. Die Variablen würde ich zudem als readonly setzen, wenn du ihren Wert wirklich nur im Konstruktor setzen musst.
(...) innerhalb der Klasse generell Eigenschaften in den Methoden darin zu verwenden oder die private Variable (...)
An sich bietet ein Property stets den Vorteil der Abstraktion. Wenn zum Lesen oder Schreiben des Felds beispielsweise eine Logik gehört, die jedesmal berücksichtigt werden muss, dann kann man die leicht mit in dem Property kapseln.
Ein einfaches Beispiel dafür wäre ein Property Age für eine Person. Damit das Alter valid bleibt, müsste man beim Schreiben den neuen Wert prüfen.
private int _age;
private int Age
{
get => _age;
set
{
if (value > -1 && value <= 123)
{
_age = value;
}
}
}
Meines Erachtens spricht dennoch nichts dagegen, auch mit Feldern zu arbeiten, sofern man so einen Fall wie oben nicht hat (bzw. umgeht) und die Sichtbarkeit auf den Klassenkörper beschränkt ist. Aus einem Feld später noch ein Property zu machen, ist in einer IDE wie Visual Studio glücklicherweise auch nicht so schwer.