Erişim belirleyicileri (Access Modifiers) uygulamamızda kullandığımız varlıkların bulundukları kod bloğu dışından erişilip erişilemeyeceğini belirlemek için kullanırız. Erişim belirleyiciler C# projesinde tanımlanmış tüm varlıklara uygulanabilir. Class, function, method, struct, property ve class seviyesindeki tüm değişkenlere uygulana bilir.
C# dilinde tanımlanmış erişim belirleyiciler (access modifiers);
public : public öğelere, kod bloğunun içinden ve dışından erişilebilir. Kısaca, hiçbir kısıtlama yoktur.
protected : protected olarak tanımlanan öğelere, sadece tanımlandığı class’ın içinden ve o class’tan türetilmiş class’ların içinden erişilebilir.
internal : internal olarak tanımlanan öğelere, bulunduğu assembly’nin (Dll veya Exe dosyası) içinden erişilebilir. 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 birleştirilmiş halidir (protected veya (or) internal diye düşünebiliriz). protected internal olarak tanımlanmış öğeye, 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şilebilir.
private : private olarak tanımlanan öğelere, sadece tanımlandığı class içerisinde erişilebilir. En kısıtlı erişim belirleyicidir.
class veya struct‘lar varsayılan olarak internal erişimine sahiptir.
Class içerisinde tanımlı öğeler varsayılan olarak private erişimine sahiptir.