C# Property (Özellikler) Kullanımı
Property (Özellikler), C# sınıflarında özel alanlara (fields) kontrollü erişim sağlamak için kullanılan bir mekanizmadır. Property'ler, kapsülleme (encapsulation) prensibini uygulamak için yaygın olarak kullanılır ve veri güvenliğini artırırken, dış kodun bu verilere erişmesini veya değiştirmesini sağlar.
Property Nedir?
Property'ler, get
ve set
blokları ile çalışan, özel değişkenleri (fields) koruyan metotlara benzer yapılar sunar.
- Getter: Değişkenin değerini döndürür.
- Setter: Değişkene yeni bir değer atar.
Property Tanımlama
Property'lerin nasıl tanımlandığını ve nasıl kullanıldığını gösteren temel bir örnek:
using System; class Person { private string name; // Private alan // Property tanımlama public string Name { get { return name; } // Getter metodu set { name = value; } // Setter metodu } } class Program { static void Main(string[] args) { Person person = new Person(); // Property kullanarak değer atama person.Name = "Ali"; // Property kullanarak değeri okuma Console.WriteLine($"Adı: {person.Name}"); } }
Programın Çıktısı
Adı: Ali
Property'lerin Avantajları
- Veri Güvenliği: Verileri dışarıdan doğrudan erişime kapatır.
- Doğrulama ve Kontrol: Property içindeki
set
bloğu ile veri doğrulaması yapılabilir. - Esneklik: Özellikler, gerektiğinde sadece okunabilir veya sadece yazılabilir olarak tanımlanabilir.
Property Kullanımı ile Veri Doğrulama
Setter metodu içinde veri doğrulama ekleyerek daha güvenli bir veri giriş sistemi oluşturabiliriz:
class Person { private int age; public int Age { get { return age; } set { if (value > 0) // Negatif yaş engelleniyor { age = value; } else { Console.WriteLine("Yaş negatif olamaz!"); } } } } class Program { static void Main(string[] args) { Person person = new Person(); person.Age = 25; // Geçerli değer Console.WriteLine($"Yaş: {person.Age}"); person.Age = -5; // Geçersiz değer, hata mesajı verir } }
Programın Çıktısı
Yaş: 25 Yaş negatif olamaz!
Sadece Okunabilir (Read-Only) Property
Property'nin yalnızca okunabilir olması istenirse, set
bloğu kaldırılarak sadece get
bloğu tanımlanabilir:
class Person { private string nationality = "Türk"; public string Nationality { get { return nationality; } } } class Program { static void Main(string[] args) { Person person = new Person(); Console.WriteLine($"Uyruğu: {person.Nationality}"); } }
Programın Çıktısı
Uyruğu: Türk
Otomatik Property (Auto-Implemented Properties)
C#’ta property tanımlamak için kısa bir yol olarak otomatik property kullanılabilir. Bu yöntemle get
ve set
blokları otomatik olarak oluşturulur ve özel değişken tanımlamak gerekmez:
class Person { public string Name { get; set; } public int Age { get; set; } } class Program { static void Main(string[] args) { Person person = new Person { Name = "Ali", Age = 30 }; Console.WriteLine($"Ad: {person.Name}"); Console.WriteLine($"Yaş: {person.Age}"); } }
Programın Çıktısı
Marka: Toyota
Readonly (Sadece Okunabilir) Otomatik Property
Sadece okunabilir bir otomatik özellik init
anahtar kelimesi ile tanımlanabilir:
class Car { public string Brand { get; init; } = "Toyota"; } class Program { static void Main(string[] args) { Car myCar = new Car { Brand = "Honda" }; // İlk atama geçerli Console.WriteLine($"Marka: {myCar.Brand}"); // myCar.Brand = "Ford"; // Hata! init özelliği sadece nesne oluşturulurken atanabilir } }
Sonuç
C#’ta property’ler, sınıfların özelliklerine güvenli ve kontrollü erişim sağlamak için kullanılır. get
ve set
blokları ile veri doğrulaması ve iş mantığı uygulanabilir. Otomatik özellikler (auto-implemented properties
) ise kodu daha kısa ve okunabilir hale getirir. Property'ler, yazılım geliştirme sürecinde veri kapsülleme (encapsulation) için en yaygın kullanılan yapılardan biridir.