Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A tulajdonságok biztosítják a nyilvános adattagok kényelmét anélkül, hogy az objektum adataihoz nem védett, ellenőrizetlen és nem ellenőrzött hozzáférés kockázatát jelentenék. Tulajdonságok deklarálják lekérőket: speciális metódusok, amelyek az alapul szolgáló adattag értékeit állítják be és olvassák le. A tartozék lehetővé teszi az adattagok hozzárendelését, a pedig lekéri tartozék az adattagértékeket.
Ez a minta egy Person osztályt mutat be, amely két tulajdonsággal rendelkezik: Name (sztring) és Age (int). Mindkét tulajdonság get és set tartozékot biztosít, ezért olvasási/írási tulajdonságoknak minősülnek.
Példa
class Person
{
private string _name = "N/A";
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;
}
}
public class Wrapper
{
private string _name = "N/A";
public string Name
{
get
{
return _name;
}
private set
{
_name = value;
}
}
}
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 - {person}");
// Set some values on the person object:
person.Name = "Joe";
person.Age = 99;
Console.WriteLine($"Person details - {person}");
// Increment the Age property:
person.Age += 1;
Console.WriteLine($"Person details - {person}");
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
/* Output:
Person details - Name = N/A, Age = 0
Person details - Name = Joe, Age = 99
Person details - Name = Joe, Age = 100
*/
Robusztus programozás
Az előző példában a Name és Age tulajdonságok nyilvános, és get és set tartozékot is tartalmaznak. A nyilvános hozzáférési metódusok bármely objektum számára lehetővé teszik, hogy elolvashassa és módosíthassa ezeket a tulajdonságokat. Néha azonban kívánatos kizárni az egyik elérési metódust. Kihagyhatja a set tartozékot, hogy a tulajdonság írásvédett legyen:
public string Name
{
get
{
return _name;
}
private set
{
_name = value;
}
}
Másik lehetőségként közzéteheti az egyik tartozékot nyilvánosan, de a másikat magánjellegűvé vagy védetté teheti. További információért lásd a(z) aszimmetrikus hozzáférés akadálymentességét.
A tulajdonságok deklarálása után az osztály mezőiként használhatók. A tulajdonságok lehetővé teszik a természetes szintaxist egy tulajdonság beolvasásakor és beállításakor is, ahogyan az alábbi utasításokban is szerepel:
person.Name = "Joe";
person.Age = 99;
Egy tulajdonság set metódusban egy speciális value változó érhető el. Ez a változó a felhasználó által megadott értéket tartalmazza, például:
_name = value;
Figyelje meg a Age tulajdonság Person objektumon való növelésének tiszta szintaxisát:
person.Age += 1;
Ha külön set és get metódusokat használtak a tulajdonságok modellezéséhez, az egyenértékű kód a következőképpen nézhet ki:
person.SetAge(person.GetAge() + 1);
A ToString metódust felülírták ebben a példában:
public override string ToString()
{
return "Name = " + Name + ", Age = " + Age;
}
Figyelje meg, hogy a ToString nem kifejezetten használják a programban. Alapértelmezés szerint a WriteLine hívások hívják meg.