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#)