Access modifiers in C# are used to specify the scope of accessibility of a member of a class or type of the class itself. For example, a public class is accessible to everyone without any restrictions, while an internal class may be accessible to the assembly only.
Objects that implement private access modifiers are accessible only inside a class or a structure. As a result, we can’t access them outside the class they are created
using System;
namespace MyApplication {
class Course {
private string CourseName = "C#";
private void print() {
Console.WriteLine("Topics from C#");
}
}
class Program {
static void Main(string[] args) {
// creating object of Course class
Course course1 = new Course();
// accessing CourseName field and printing it
Console.WriteLine("CourseName: " + course1.CourseName);
// accessing print method from Course
course1.print();
Console.ReadLine();
}
}
}
OUTPUT
error CS0122: `MyApplication.Course.CourseName' is inaccessible due to its protection level
error CS0122: `MyApplication.Course.print()' is inaccessible due to its protection level
Objects that implement public access modifiers are accessible from everywhere in our project. Therefore, there are no accessibility restrictions.
using System;
namespace MyApplication {
class Course {
public string CourseName = "C#";
public void print() {
Console.WriteLine("Topics from C#");
}
}
class Program {
static void Main(string[] args) {
// creating object of Course class
Course course1 = new Course();
// accessing CourseName field and printing it
Console.WriteLine("CourseName: " + course1.CourseName);
// accessing print method from Course
course1.print();
Console.ReadLine();
}
}
}
OUPUT
CourseName: C#
Topics from C#
The protected keyword implies that the object is accessible inside the class and in all classes that derive from that class. we are going to take a look at this example to understand the behavior of the protected members.
using System;
namespace MyApplication {
class Course {
protected string CourseName = "C#";
}
class Program {
static void Main(string[] args) {
// creating object of Course class
Course course1 = new Course();
// accessing CourseName field and printing it
Console.WriteLine("CourseName: " + course1.CourseName);
Console.ReadLine();
}
}
}
OUTPUT
error CS0122: `MyApplication.Course.CourseName' is inaccessible due to its protection level
Now, let's try to access the protected member from a derived class.
using System;
namespace MyApplication {
class Course {
protected string CourseName = "C#";
}
// derived class
class Program : Course {
static void Main(string[] args) {
// creating object of derived class
Program program = new Program();
// accessing CourseName field and printing it
Console.WriteLine("CourseName: " + program.CourseName);
Console.ReadLine();
}
}
}
OUTPUT
CourseName: C#