Dikkat ettiyseniz örneklerde değişken veya metotların başına public yazısı yazdım. Bunun bir anlamı olduğunu hiç düşündünüz mü? Veya araştırma gereği duydunuz? Belki de C# en önemli konularından biri erişim belirtecidir. Erişim belirteçlerinin amacı programcıyı korumaktır. Bu ne demek oluyor peki? Erişim belirteçleri sınıf elemanlarının erişimlerine sınır koyarak programcının hata yapmasına ve kodun programcı karşısında korunmasını sağlar. Küçük projelerde bu önemsiz olsa da projeler büyüdükçe işler karışmaktadır. C# bu konularda C++’a göre daha katıdır. Şimdi C#’daki erişim belirteçlerine biraz göz atalım.
public : public olarak tanımlanan öğe, kod bloğunun içinde ve dışında tamamen erişilebilirdir. Yani, hiçbir kısıtlama yoktur.
protected : protected olarak tanımlanan öğe, sadece tanımlandığı class’ın içinde ve o class’tan türetilmiş diğer class’ların içinde erişilebilirdir.
internal : internal olarak tanımlanan öğe, bulunduğu assembly’nin (Dll veya Exe dosyası) içinde erişilebilirdir. Dll veya Exe dosyasının içerisinde erişim için kısıtlama yoktur, ama dışarıdan erişilemez.
protected internal : protected internal erişim belirleyicisi, protected ve internal erişim belirleyicilerinin VEYA (OR) işlemiyle birleştirilmiş halidir. protected internal olarak tanımlanmış öğe, tanımlandığı class’ın içinde ve o class’tan türetilmiş diğer class’ların içinde erişilebilir. Ayrıca, aynı assembly içinde olmasalar dahi, tanımlandığı class’tan türetilmiş diğer class’ların içinde de erişilebilirdir.
private : private olarak tanımlanan öğe, sadece tanımlandığı class’ın içerisinde erişilebilirdir. En katı erişim belirleyicidir.Varsayılan olarak class içerisinde tanımlı öğeler private erişim belirleyicisine sahiptirler.
struct içerisinde tanımlı öğeler public, internal veya private olabilirler. struct‘lar türetmeyi desteklemediği içinprotected ve protected internal erişim belirleyicisine zaten ihtiyaçları yoktur.
Bu belirteçler ve kullanım alanlarını bilmek projelerimizin yönetimi sırasında bizr çok yardımcı olacaktır. Sınıflardaki nesne ve metotlara pek ulaşılması istenilmediği için private belirteci kullanılır. internal protected ve protected internal beliteçlerini daha ayrıntılı olarak kalıtım konusunda ele alacağım. Ayrıca metotların public olması içindeki değişkenlerin private olmasıne engel değildir. Bu kavramları kavramanız önemlidir. Kalıtım konusundan sonra hepsinin iyice pekişeceğine inanıyorum. Şimdilik iyi akşamlar. :)
public : public olarak tanımlanan öğe, kod bloğunun içinde ve dışında tamamen erişilebilirdir. Yani, hiçbir kısıtlama yoktur.
protected : protected olarak tanımlanan öğe, sadece tanımlandığı class’ın içinde ve o class’tan türetilmiş diğer class’ların içinde erişilebilirdir.
internal : internal olarak tanımlanan öğe, bulunduğu assembly’nin (Dll veya Exe dosyası) içinde erişilebilirdir. Dll veya Exe dosyasının içerisinde erişim için kısıtlama yoktur, ama dışarıdan erişilemez.
protected internal : protected internal erişim belirleyicisi, protected ve internal erişim belirleyicilerinin VEYA (OR) işlemiyle birleştirilmiş halidir. protected internal olarak tanımlanmış öğe, tanımlandığı class’ın içinde ve o class’tan türetilmiş diğer class’ların içinde erişilebilir. Ayrıca, aynı assembly içinde olmasalar dahi, tanımlandığı class’tan türetilmiş diğer class’ların içinde de erişilebilirdir.
private : private olarak tanımlanan öğe, sadece tanımlandığı class’ın içerisinde erişilebilirdir. En katı erişim belirleyicidir.Varsayılan olarak class içerisinde tanımlı öğeler private erişim belirleyicisine sahiptirler.
struct içerisinde tanımlı öğeler public, internal veya private olabilirler. struct‘lar türetmeyi desteklemediği içinprotected ve protected internal erişim belirleyicisine zaten ihtiyaçları yoktur.
Bu belirteçler ve kullanım alanlarını bilmek projelerimizin yönetimi sırasında bizr çok yardımcı olacaktır. Sınıflardaki nesne ve metotlara pek ulaşılması istenilmediği için private belirteci kullanılır. internal protected ve protected internal beliteçlerini daha ayrıntılı olarak kalıtım konusunda ele alacağım. Ayrıca metotların public olması içindeki değişkenlerin private olmasıne engel değildir. Bu kavramları kavramanız önemlidir. Kalıtım konusundan sonra hepsinin iyice pekişeceğine inanıyorum. Şimdilik iyi akşamlar. :)
Yorumlar
Yorum Gönder