C# Access Modifier (Public, Private, Protected) Farkları
C# dilinde, Access Modifier (Erişim Belirleyici), bir sınıf, öğe veya üyenin dışarıdan erişilebilirliğini belirler. Access Modifier, bir sınıf, öğe veya üyenin ne şekilde ve hangi koşullarda kullanılabileceğini tanımlar.
C# dilinde kullanılabilecek Access Modifier'lar şunlardır:
public : Türe veya üyeye, aynı derlemedeki veya ona başvuran başka bir derlemedeki herhangi bir kodla erişilebilir. Bir türün genel üyelerinin erişilebilirlik düzeyi, türün erişilebilirlik düzeyi tarafından kontrol edilir.
private : Türe veya üyeye yalnızca aynı class
veya içindeki kod ile erişilebilir struct
. Eğer bir modifier yazmazsanız otomatik olarak private gibi davranır.
protected : Türe veya üyeye yalnızca aynı class
veya class
ondan türetilen bir kodla erişilebilir class
.
internal : Türe veya üyeye, aynı derlemedeki herhangi bir kodla erişilebilir, ancak başka bir derlemeden erişilemez. Başka bir deyişle, internal
türlere veya üyelere aynı derlemenin parçası olan koddan erişilebilir.
protected_internal : Türe veya üyeye, bildirildiği derlemedeki herhangi bir kodla veya başka bir derlemede türetilmiş bir koddan erişilebilir .
private protected : Türe veya üyeye , içerdiği derleme içinde bildirilenlerden türetilen türlerle erişilebilir .
Summary table
Caller's location | public | protected internal | protected | internal | private protected | private |
---|---|---|---|---|---|---|
Aynı class içinden | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Türetilmiş sınıf (aynı derleme) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Türetilmemiş sınıf (aynı derleme) | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
Türetilmiş sınıf (farklı derleme) | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |
Türetilmemiş sınıf (farklı derleme) | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
Daha detaylı bilgiye bruadan erişebilirsiniz: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers