Tanımladığımız nesnelerin, metotların ya da değişkenlerin kimler (kendisi, başka sınıflar, başka assembly’ler vs.) tarafından erişilebilir olduğunu belirttiğimiz ifadelere erişim belirleyiciler denir. Bu yaklaşım nesne yönelimli programlama dillerinin çoğunda (ezici çoğunlukla) vardır.
C# dilinde kullanabileceğimiz erişim belirleyiciler koruma düzeyine göre (azdan çoğa) aşağıdakilerdir.
public: (genel)
Her sınıf ya da assembly içinden erişilebilir. Hiç kısıtlama yok. Sınıfın dışından kullanılması gereken metotlar ya da özellikler (property) için kullanılabilir.
protected: (korumalı)
Sadece varlığın tanımlandığı sınıf ya da o sınıftan kalıtılan sınıflar içinden erişilebilir. Sınıf içindeki alanlar (field) için kullanılabilir.
internal: (dahili)
Varlık sadece bağlı bulunduğu assembly (dll, exe) içinden erişilebilir. Dağıtmak üzere yazdığınız bir kütüphane içinde kullanılabilir.
protected internal: (korumalı-dahili)
Aynı ya da farklı assembly’ler içinde olması farketmeksizin sadece kendi sınıfından kalıtılmış sınıflar içerisinden erişilebilir. Sadece dağıttığınız kütüphaneki sınıflardan türetilen sınıflar için kullanılabilir.
private: (özel)
Sadece kendi (sınıf) içinden erişilebilir. Türetilmiş (derived) sınıflardan erişilmesini istemediğiniz öğeler için kullanılabilir.
C# içinde tüm sınıflar varsayılan olarak internal, sınıf içindeki varlıklar ise private erişim belirleyicisine sahiptirler.