Junior
C# dilinde hangi erişim belirteçleri vardır?
sobes.tech yapay zeka
AI'dan gelen yanıt
C# dilinde aşağıdaki erişim belirteçleri bulunmaktadır:
- public: Erişim sınırlandırılmamıştır.
publicolarak işaretlenmiş üyeler, kapsayıcı türlerinin erişilebilir olduğu her yerden erişilebilir. - private: Erişim, kapsayıcı türle sınırlıdır.
privateolarak işaretlenmiş üyeler, yalnızca aynı sınıf veya yapı içindeki koddan erişilebilir. - protected: Erişim, kapsayıcı tür veya ondan türeyen türlerle sınırlıdır.
protectedolarak işaretlenmiş üyeler, kendi sınıfı ve türeyen sınıflar içinde erişilebilir. - internal: Erişim, mevcut derleme ile sınırlıdır (.dll veya .exe).
internalolarak işaretlenmiş üyeler, aynı derleme içindeki her yerden erişilebilir. - protected internal: Erişim, mevcut derleme veya başka derlemelerdeki türeyen türlerle sınırlıdır. Bu,
protectedveinternalkombinasyonudur. - private protected: Erişim, kapsayıcı tür veya ondan türeyen türlerle, sadece aynı derleme içinde sınırlıdır. Bu,
privateveprotectedkombinasyonudur.
// Erişim belirteçlerinin kullanımına örnek
public class MyClass
{
public int PublicField; // Her yerden erişilebilir
private int PrivateField; // Sadece MyClass içinde erişilebilir
protected int ProtectedField; // MyClass ve türeyen sınıflarda erişilebilir
internal int InternalField; // Mevcut derleme içinde erişilebilir
protected internal int ProtectedInternalField; // Mevcut derleme içinde veya türeyen sınıflarda erişilebilir
private protected int PrivateProtectedField; // MyClass veya bu derlemedeki türeyen sınıflarda erişilebilir
void MyMethod()
{
PrivateField = 10; // OK
}
}
public class DerivedClass : MyClass
{
void DerivedMethod()
{
ProtectedField = 20; // OK
// PrivateField = 30; // Hata - özel alan kalıtımda erişilebilir değil
ProtectedInternalField = 40; // OK
PrivateProtectedField = 50; // OK
}
}
public class AnotherClassInSameAssembly
{
void AnotherMethod()
{
MyClass mc = new MyClass();
mc.PublicField = 1; // OK
mc.InternalField = 2; // OK
mc.ProtectedInternalField = 3; // OK
// mc.PrivateField = 4; // Hata
// mc.ProtectedField = 5; // Hata
// mc.PrivateProtectedField = 6; // Hata
}
}