C# Provides five types of access specifiers:
They are: Public, Private, Protected, Internal, Protected Internal
Public – It specifies that access is not restricted
Protected- It specifies that access is limited to the containing class or in a derived class
Internal – It specifies that access is limited to the current assembly
Protected Internal – It specifes that access is limited to the current asembly or types from the derived class
Private – It specifies that acess is limited to the containing type
this video will surely help to understand:
Now lets see the example:
public:
using System; namespace Public { class Program { public string name = "Shantosh Kumar"; public void Msge(string msg) { Console.WriteLine("Hello "+msg); } } class TestingPublic { static void Main(string[] args) { Program p1=new Program(); Console.WriteLine("Hello "+p1.name); p1.Msge("Live"); Console.ReadKey(); } } }
protected:
using System; namespace Protected { class ProtectedTest { protected string name = "Syed Ahmed Zaki"; protected void msg(string msg) { Console.WriteLine("Hello "+msg); } } class Program { ProtectedTest p1=new ProtectedTest(); static void Main(string[] args) { Console.WriteLine("Hello: "+p1.name); ProtectedTest.msg("Rahim"); } } }
output: it will show error
but we can show the output through some tricks
//we are inheriting here the protected class using System; namespace Protected { class ProtectedTest { protected string name = "Syed Ahmed Zaki"; protected void msg(string msg) { Console.WriteLine("Hello "+msg); } } class Program:ProtectedTest { //ProtectedTest p1=new ProtectedTest(); static void Main(string[] args) { Program pp = new Program(); Console.WriteLine("Hello "+pp.name); pp.msg("Rahim"); Console.ReadKey(); } } }
output:
Hello Syed Ahmed Zaki Hello Rahim
Internal:
using System; namespace InternalTest { static class InternalTestaaa { internal static string name = "Zaki Live"; internal static void msg(string msg) { Console.WriteLine("Hello: "+msg); } } class Program { static void Main(string[] args) { Console.WriteLine("Hello "+InternalTestaaa.name); InternalTestaaa.msg("Chiki Tita"); Console.ReadKey(); } } }
Protected Internal:
private:
eg 1:
//different class it is showing error while private using System; namespace Private { class PrivateTest { private string name = "Shantosh Kumar"; private void Msg(string msg) { Console.WriteLine("Hello"+msg); } } class Program { static void Main(string[] args) { PrivateTest pvt1=new PrivateTest(); //Accessing private variable Console.WriteLine("Hello "+pvt1.name); //accessing private function pvt1.Msg(); Console.ReadKey(); } } }
eg 2: