Felder vs. Eigenschaften
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy. Lektion 6 von 70.
Felder sind Variablen, die direkt in einer Klasse deklariert werden. Properties sind Member, die mithilfe von get- und set-Accessoren einen kontrollierten Zugriff auf Felder ermöglichen.
Felder speichern Daten direkt
public class Person
{
// Felder - direkte Variablenspeicherung
private string name;
private int age;
}Eigenschaften bieten kontrollierten Zugriff mit get und set
public class Person
{
private string name;
// Eigenschaft mit Backing-Field
public string Name
{
get { return name; }
set { name = value; }
}
}Automatisch implementierte Eigenschaften (Kurzschreibweise)
public class Person
{
// Automatisch implementierte Eigenschaft
public string Name { get; set; }
public int Age { get; set; }
}Eigenschaften können Validierungslogik enthalten
public class Person
{
private int age;
public int Age
{
get { return age; }
set
{
if (value >= 0 && value <= 120)
age = value;
}
}
}Schreibgeschützte Eigenschaft (nur get-Accessor)
public class Circle
{
private double radius;
public double Radius
{
get { return radius; }
}
// Schreibgeschützte berechnete Eigenschaft
public double Area
{
get { return Math.PI * radius * radius; }
}
}Felder sind in der Regel privat und der Zugriff erfolgt über Eigenschaften. Eigenschaften ermöglichen es Ihnen, Logik, Validierung und Kontrolle darüber hinzuzufügen, wie auf Daten zugegriffen wird oder wie diese geändert werden. Automatisch implementierte Eigenschaften sind praktisch, wenn Sie keine zusätzliche Logik benötigen.
Aufgabe
MittelErstelle eine BankAccount-Klasse, die den Unterschied zwischen Feldern und Eigenschaften veranschaulicht:
- Ein privates
balance-Feld zum Speichern des Kontostands - Eine automatisch implementierte Eigenschaft
AccountName - Eine schreibgeschützte Eigenschaft
Balance, die das balance-Feld zurückgibt - Methoden
DepositundWithdraw, die das private Feld ändern
Probier es selbst
using System;
class Program
{
static void Main()
{
string accountName = Console.ReadLine();
decimal initialBalance = decimal.Parse(Console.ReadLine());
decimal depositAmount = decimal.Parse(Console.ReadLine());
BankAccount account = new BankAccount(accountName, initialBalance);
Console.WriteLine($"Account: {account.AccountName}");
Console.WriteLine($"Initial Balance: ${account.Balance}");
account.Deposit(depositAmount);
Console.WriteLine($"After Deposit: ${account.Balance}");
string result = account.Withdraw(2000);
Console.WriteLine($"Withdraw attempt: {result}");
Console.WriteLine($"Final Balance: ${account.Balance}");
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjektinitialisiererWiederholung – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbungs-(:)-SyntaxDas „base“-Schlüsselwort„virtual“- und „override“-SchlüsselwörterVersiegelte KlassenDie „object“-BasisklasseWiederholung – Mitarbeiterhierarchie7Erweiterte Funktionen
Überladen von OperatorenIndexer (this[])ToString()-ÜberschreibungErweiterungsmethodenRückblick – Benutzerdefinierte Liste10Entwurfsmuster Teil 1
Einführung in EntwurfsmusterThread-sicheres SingletonFactory-MusterObserver-Muster (Events)Strategy-Muster13Abschließende Herausforderungen
E-Learning-PlattformKomponente für SpielfigurenFahrzeugvermietungsdienst2Eigenschaften & statische Member
Automatisch implementierte EigenschaftenNur lesbare/schreibbare EigenschaftenStatische Felder & MethodenStatische KlassenMember mit Ausdruckskörpern5Polymorphie & Interfaces
Compile- vs. Laufzeit-PolymorphieInterface vs. abstrakte KlasseMehrere InterfacesExplizite InterfacesUpcasting & DowncastingWiederholung – Formenrechner3Klassenarchitektur
Instanz- vs. statische DatenSchlüsselwörter 'readonly' & 'const'Backing FieldsRückblick – Bankkontenverwaltung6Kapselung
ZugriffsmodifikatorenEigenschaften zur KapselungImplementierung der DatenkapselungMuster für UnveränderlichkeitRückblick – SchülerdatenÜbe selbstständig: Online-C#-Compiler