Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Özellikler, bir nesnenin verilerine korumasız, denetimsiz ve doğrulanmamış erişimle gelen riskler olmadan genel veri üyelerine kolaylık sağlar. Özellikler erişimcileri bildirir: temel alınan veri üyesine değer atayan ve bu üyeden değer alan özel yöntemler. Set erişimcisi, veri üyelerinin atanmalarına olanak tanır ve Get erişimcisi veri üyesi değerlerini alır.
Bu örnekte iki özelliği olan bir Person sınıfı gösterilmektedir: Name (dize) ve Age (int). Her iki özellik de get ve set erişimcileri sağladığından okuma/yazma özellikleri olarak kabul edilirler.
Örnek
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
*/
Sağlam Programlama
Önceki örnekte Name ve Age özellikleri geneldir ve hem bir get hem de bir set erişimci içerir. Ortak erişimciler, herhangi bir nesnenin bu özellikleri okumasına ve yazmasına izin verir. Ancak bazen erişimcilerden birini dışlamak tercih edilir. özelliği salt okunur hale getirmek için set erişimcisini atlayabilirsiniz:
public string Name
{
get
{
return _name;
}
private set
{
_name = value;
}
}
Alternatif olarak, bir erişimciyi herkese açık hale getirirken, diğerini özel veya korumalı hale getirebilirsiniz. Daha fazla bilgi için bkz . Asimetrik Erişimci Erişilebilirliği.
Özellikler bildirildikten sonra sınıfın alanları olarak kullanılabilir. Özellikler, aşağıdaki deyimlerde olduğu gibi bir özelliğin değerini alırken ve ayarlarken doğal bir söz dizimine olanak sağlar:
person.Name = "Joe";
person.Age = 99;
Bir özellik set yönteminde özel value bir değişken kullanılabilir. Bu değişken, kullanıcının belirttiği değeri içerir, örneğin:
_name = value;
Age özelliğini bir Person nesnesinde artırmaya yönelik temiz söz dizimine dikkat edin.
person.Age += 1;
Özellikleri modellemek için ayrı set ve get yöntemler kullanıldıysa, eşdeğer kod aşağıdaki gibi görünebilir:
person.SetAge(person.GetAge() + 1);
Yöntemi ToString bu örnekte geçersiz kılınmış:
public override string ToString()
{
return "Name = " + Name + ", Age = " + Age;
}
ToString Bunun programda açıkça kullanılmadığını fark edin.
WriteLine çağrıları varsayılan olarak tetiklenir.