C# Private Protected Nedir?

C# dilinde "private protected" ifadesi, bir üyenin yalnızca tanımlandığı sınıf veya türethiği sınıflar tarafından erişilebileceğini belirtir.


C# Private Protected Nedir?

Bir sınıf veya üye için erişim belirticinin anlamı, geliştiricinin diğer kodun bu üyeye erişme yeteneği olduğunu belirtir. C# dilinde "private" erişim belirteci, bir üyenin yalnızca tanımlandığı sınıfın içinden erişilebileceğini belirtir. "Protected" erişim belirteci ise, bir üyenin tanımlandığı sınıf tarafından ve diğer sınıflardan türetilen sınıflar tarafından erişilebileceğini belirtir.

"Private protected" erişim belirteci, bu iki kavramın birleşimidir. Yani, bir üye ya da sınıf, yalnızca tanımlandığı sınıfa veya aynı derleme içindeki türetilmiş bir sınıfa erişilebilir. Bu durumda, türetilmiş bir sınıf, tanıllanan sınıfın içinde veya aynı derlemenin içinde bulunmalıdır.

Bu erişim belirteci, özellikle kütüphane tasarımlarında kullanışlı olabilir. Bir kütüphanenin, sınıflarının veya üyelerinin, kütüphane kullanıcıları tarafından erişilmesini istemeyebilirsiniz. Ancak, kütüphane içerisindeki bazı türetilmiş sınıfların bu üyelere erişmesini sağlamak isteyebilirsiniz. İşte bu durumda "private protected" erişim belirteci devreye girer. Bu sayede, kütüphane kullanıcıları bu üyelere erişemezken, kütüphane içerisindeki türetilmiş sınıflar bu üyelere erişebilir.

Bir örnek üzerinden açıklamak gerekirse, aşağıdaki kod bloğunda bir "Base" sınıfı ve adından da anlaşılacağı gibi bu sınıftan türetilen bir "Derived" sınıfı bulunmaktadır:

class Base
{
    private protected int number;
}

class Derived : Base
{
    void ChangeNumber()
    {
        number = 10; // Geçerli
    }
}

Yukarıdaki örnekte, "Base" sınıfında "private protected" erişim belirteci ile tanımlanan "number" adlı bir değişken bulunmaktadır. Bu değişkene yalnızca "Base" sınıfının veya aynı derlemdeki türetilmiş sınıfların erişebileceği belirtilmiştir.

"Derived" sınıfında ise "ChangeNumber" adında bir metod bulunmaktadır. Bu metod içerisinde "number" değişkenine erişilmiş ve değeri değiştirilmiştir. Bu işlem "private protected" erişim belirteci sayesinde mümkün olmuştur.

Özetlemek gerekirse, "private protected" erişim belirteci bir üyenin veya sınıfın yalnızca tanımlandığı sınıfın veya aynı derleme içindeki türetilmiş bir sınıfın erişebileceğini belirtir. Bu erişim belirteci, sınıfların ve üyelerin gizlilik düzeyini kontrol etmede kullanışlı bir araçtır ve kütüphane tasarımlarında özellikle etkilidir.


Sıkça Sorulan Sorular

1. Private Protected nedir?

Private Protected, bir nesnenin sadece aynı sınıf ya da aynı derleme birimi içinde kullanılabilen erişim belirtecidir. Bu erişim belirteci, nesneye sadece tanımlandığı sınıfın içinde veya aynı derleme birimindeki türemiş sınıflarda erişilmesine izin verir.

2. Private Protected ile Private arasındaki fark nedir?

Private, bir nesnenin sadece tanımlandığı sınıf içinde erişilebilir olduğunu belirtirken, Private Protected, aynı sınıfın içinde ve aynı derleme biriminde türeyen sınıflarda erişilebilir olduğunu belirtir. Yani Private Protected, daha geniş bir erişim izni sağlar.

3. Private Protected erişim belirteci ne zaman kullanılır?

Private Protected, sınıf hiyerarşisinin içinde belli bir koruma düzeyi sağlamak için kullanılır. Bir üyenin sadece tanımlandığı sınıf içinde ve türemiş sınıflarında erişilebilmesini istiyorsanız Private Protected kullanabilirsiniz.

4. Private Protected ne zaman kullanılmaz?

Private Protected, sınıf hiyerarşisindeki tüm sınıflarda erişilebilir olmasını istediğiniz bir üye için uygun bir erişim belirteci değildir. Eğer üyenin tüm sınıflar tarafından erişilebilir olmasını istiyorsanız Public erişim belirtecini kullanmalısınız.

5. Private Protected erişim belirteci hangi C# versiyonuyla kullanılabilir?

Private Protected, C# 7.2 sürümüyle birlikte kullanıma sunulmuştur. Bu sebeple C# 7.2 veya daha yeni bir sürüm kullanılıyorsa Private Protected erişim belirteci kullanılabilir.

Diğer Nedir Yazıları