Sdílet prostřednictvím


Jak: deklarovat a použít vlastnosti pro čtení i zápis (Příručka programování C#)

Vlastnosti poskytují pohodlí veřejné datové členy bez rizika, které jsou součástí nechráněné, neřízeného a neověřený přístup k datům objektu.Toho je dosaženo přístupové objekty: zvláštní metody, které přiřadíte a načtení hodnot z podkladové datový člen.Set přístupový objekt umožňuje členům data přiřazena a získat přístupový objekt načte data hodnoty členů.

Tento příklad ukazuje Person třídy, která má dvě vlastnosti: Name (řetězec) a Age (int).Obě vlastnosti poskytují get a set přístupové objekty, takže jsou považovány za zápis vlastnosti.

Příklad

class Person
{
    private string name = "N/tcA";
    private int age = 0;

    // Declare a Name property of type string:
    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }

    // Declare an Age property of type int:
    public int Age
    {
        get
        {
            return age;
        }

        set
        {
            age = value;
        }
    }

    public override string ToString()
    {
        return "Name = " + Name + ", Age = " + Age;
    }
}

class TestPerson
{
    static void Main()
    {
        // Create a new Person object:
        Person person = new Person();

        // Print out the name and the age associated with the person:
        Console.WriteLine("Person details - {0}", person);

        // Set some values on the person object:
        person.Name = "Joe";
        person.Age = 99;
        Console.WriteLine("Person details - {0}", person);

        // Increment the Age property:
        person.Age += 1;
        Console.WriteLine("Person details - {0}", person);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
/* Output:
    Person details - Name = N/tcA, Age = 0
    Person details - Name = Joe, Age = 99
    Person details - Name = Joe, Age = 100
*/

Robustní programování

V předchozím příkladu Name a Age vlastnosti jsou veřejné a zahrnují i get a set přístupový objekt.To umožňuje čtení a zápis těchto vlastností objektu.Však je někdy žádoucí vyloučit jednu přístupové objekty.Vynechání set přístupový objekt, například umožňuje vlastnost jen pro čtení:

public string Name
{
    get
    {
        return name;
    }
}

Alternativně lze veřejně zpřístupnit jeden přístupový objekt, ale jiné soukromé nebo chráněné.Další informace naleznete v tématu Asymetrické přístupový objekt usnadnění.

Jakmile jsou deklarovány vlastnosti, můžete jako kdyby byly pole Třída používá.To umožňuje velmi přírodní syntaxi při získání a nastavení hodnoty vlastnosti, jako v následující příkazy:

person.Name = "Joe";
person.Age = 99;

Všimněte si, že ve vlastnosti set metoda a zvláštní value proměnná je k dispozici.Tato proměnná obsahuje hodnotu, například uživatel zadal:

name = value;

Oznámení čisté syntaxe stovce Age vlastnost Person objekt:

person.Age += 1;

Pokud samostatný set a get použité metody a vlastnosti modelů, ekvivalentní kód může vypadat například takto:

person.SetAge(person.GetAge() + 1); 

ToString v tomto příkladu je potlačené metody:

public override string ToString()
{
    return "Name = " + Name + ", Age = " + Age;
}

Všimněte si, že ToString není explicitně použitého v programu.Vyvolání výchozí podle WriteLine volání.

Viz také

Referenční dokumentace

Vlastnosti (Příručka programování C#)

Třídy a struktur (Příručka programování C#)

Koncepty

Příručka programování C#