C Sharp Erişim Belirleyiciler Access Modifiers Nedir ?

  1. yılmazyazgan
    2
    275
    30.03.2019 16:02:00

    Geçenlerde iş görüşmesinde Erişim belirleyicileri sordular , kaç tanedir , ne farkları vardır diye ,bilemedim , saydılar 3 4 tane , ben bir public i gördüm kodlarda adamların bahsettiklerinden

    c# .net 7 ay önce 225 Görüntüleme

( 5 ) Cevap

  1. yasin
    2
    202
    29.06.2019 13:11:00

    Erişim Belirleyiciler yani Access Modifiers, bir değişkenin,metodun,propertynin, constructor ın vb., nerelerden erişilip, nerelerden erişilebileceğini ayarlamak için kullanılır. Private, Protected, Public, Internal en bilindik erişim belirleyicileridir.

    1) Private

    Private olarak tanımlanan bir değişken,metod,property vb. sadece tanımlı olduğu sınıfın içinden erişilebilinir, başka bir yerden erişilemez.

    namespace Testler
    {
        public class PrivateTest
        {
            private int i;
            private void DenemeMetot()
            {
    
            }
    
            void DigerMetot()
            {
                this.DenemeMetot();//ancak sınıf içinde erişilebilir
                this.i=5;//ancak sınıf içinde erişilebilir
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                PrivateTest privateTest = new PrivateTest();
                privateTest.DenemeMetot();//bu satır hata verecektir, erişilemez metot
                privateTest.i;//bu satırda hata verir, eişilemez değişken
            }
        }
    }
    

    private-access-modifier

  2. yasin
    2
    202
    29.06.2019 13:17:00

    2) Protected

    Bir sınıfın içinde, Protected erişim tipinde olan metoda,değişkene,propertye sadece o sınıftan kalıtım alan sınıflar erişebilir. Bu arada kendi sınıfı içinden zaten erişilebilir.

    Örneğin

       namespace Testler
    {
        public class ProtectedTest
        {
            protected int i;
            protected void DenemeMetot()
            {
            }
    
            void DigerMetot()
            {
                this.DenemeMetot();
                this.i = 4;
            }
        }
        class Program : ProtectedTest
        {
            static void Main(string[] args)
            {
                Program p = new Program();
                p.DenemeMetot();
                p.i = 4;
            }
        }
    }
    

    https://code.replyfeed.com/sorular/5973/c-sharp-protected-erisim-belirleyici

  3. yasin
    1
    202
    29.06.2019 13:20:00

    3) Public

    Public erişim belirleyicisinde ise bir kısıtlama yoktur, bir sınıftaki değişkene,metoda, propertye ... her yerden erişilebilir.

    namespace Testler
    {
        public class PublicTest
        {
            public int i;
            public void DenemeMetot()
            {
            }
    
            void DigerMetot()
            {
                this.DenemeMetot();
                this.i = 4;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                PublicTest publicTest = new PublicTest();
                publicTest.DenemeMetot();
                publicTest.i = 4;
            }
        }
    }
    
  4. yasin
    1
    202
    29.06.2019 13:33:00

    4) Internal

    Internal da ise aynı assembly içinde erişilebilir, fakat diğer assembly ler içinden erişilemez

        namespace Testler
    {
        internal class InternalTest
        {
            internal int i;
            internal void DenemeMetot()
            {
            }
    
            void DigerMetot()
            {
                this.DenemeMetot();
                this.i = 4;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                InternalTest internalTest = new InternalTest();
                internalTest.DenemeMetot();
                internalTest.i = 4;
            }
        }
    }
    
  5. derbeder
    0
    169
    29.06.2019 18:07:00

    5) Private Protected

    Private Protected da benden olsun, C# 7.2 ile gelen Private Protected, aynı assembly içinde bir sınıf, diğer bir sınıftan kalıtım alırsa, Private Protected değişken,metot vb lere ulaşabilir.

    Private Protected sayesinde, farklı assembly, namespace içindeki bir sınıftan kalıtım alınsa bile,Private Protected elemanların görülebilmesi engellenmiştir

    Burada @adarme nin verdiği bir örneğede bakabilirsiniz

    https://code.replyfeed.com/sorular/3428/c-sharp-private-protected

Cevabınız