Share via


Eigenschaften (C# und Java im Vergleich)

Aktualisiert: November 2007

Eine Eigenschaft ist in C# als benannter Member einer Klasse, einer Struktur oder einer Schnittstelle definiert. Sie ermöglicht über die get-Accessormethode und die set-Accessormethode den einfachen Zugriff auf private Felder.

Im folgenden Codebeispiel wird eine Eigenschaft mit dem Namen Species für die Klasse Animal deklariert, die den Zugriff auf eine private Variable mit dem Namen name abstrahiert.

public class Animal
{
    private string name;

    public string Species
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }
}

Oftmals trägt die Eigenschaft den gleichen Namen wie der interne Member, allerdings mit einem großen Anfangsbuchstaben wie etwa Name im obigen Beispiel, oder aber der interne Member hat einen _ vorangestellt. Beachten Sie auch den impliziten Parameter mit dem Namen value, der im set-Accessor verwendet wird. Er ist vom selben Typ wie die zugrunde liegende Membervariable.

Accessoren werden intern als get_X()-Methode und set_X()-Methode dargestellt. Auf diese Weise wird die Kompatibilität mit .NET Framework-basierten Programmiersprachen gewährleistet, die keine Accessoren unterstützen. Sobald eine Eigenschaft definiert ist, lässt sich ihr Wert mühelos abrufen oder festlegen:

class TestAnimal
{
    static void Main()
    {
        Animal animal = new Animal();
        animal.Species = "Lion";                   // set accessor
        System.Console.WriteLine(animal.Species);  // get accessor

    }
}

Eine Eigenschaft, die nur über einen get-Accessor verfügt, ist eine schreibgeschützte Eigenschaft. Eine Eigenschaft, die nur einen set-Accessor aufweist, ist nur für den Schreibzugriff verfügbar. Sind beide Accessoren vorhanden, handelt es sich um eine Eigenschaft mit Schreib-/ und Lesezugriff.

Siehe auch

Konzepte

C#-Programmierhandbuch

Referenz

Eigenschaften (C#-Programmierhandbuch)

Weitere Ressourcen

Die Programmiersprache C# für Java-Entwickler