By 22/07/2015 6 Comments

Access Modifiers In C#

  • There are four types of access modifiers in C# those are: public, private, protected and internal.
  • Access modifiers gives the access control to the class members (methods and data) that where these class members should be used? Or where should not be used? Such as they could be only used inside its own class, they could be used anywhere outside the class or they could be used within its child or sub class etc.
  • The access modifiers increase security of the class members and prevent them to be invalid use or miss use.
  • If no access modifier is specified with any member (methods and fields / variables) the C# compiler marks them private by default.

Public:

  • Any class member (method or instance field) which is declared with public access can be accessed anywhere in the code freely, as well as can be direct access by object reference outside the class and also the methods defined in other classes.

Private:

  • Any class member (method or instance field) which is declared with private access can be accessed within its class by its other class members (methods) only, it cannot be direct access by object reference outside the class and also the methods defined in other classes. The private member can only be accessed through its other class members indirectly. If no any access modifier to be set, C# sets private access modifiers to all class members by default.

Protected:

  • The protected access modifier is only used with inheritance feature. Any class member (method or instance field) which is declared with protected access can be accessed within its sub or child class in hierarchy only, a protected member works like a public modifier within inheritance but it is a private outside the hierarchy or inheritance.

Internal:

  • The internal access modifier is mostly used to the assembly or a deploy-able library.

Example: Use of public and private access modifiers:

using System;
namespace csharpBasic
{
    class MarkSheet
    {
        // This field is declared as public.
        public string StudentName;

        // this field is declared as private.
        private double AspMarks;

        /* This field is declared with no access modifier, 
           this is private by default. */
        double JqueryMarks;

        // Following void type method initializes a private field.
        public void SetAspMarks(double aspMarks)
        {
            this.AspMarks = aspMarks;
        }

        // Following return type method returns a private field.
        public double GetAspMarks()
        {
            return this.AspMarks;
        }

        // Following void type method initializes a private field.
        public void SetJqueryMarks(double jqueryMarks)
        {
            this.JqueryMarks = jqueryMarks;
        }

        // Following return type method returns a private field.
        public double GetJqueryMarks()
        {
            return this.JqueryMarks;
        }

    }
    
    class Program
    {
        // Static main method void type declaration.
        static void Main(string[] args)
        {
            MarkSheet markSheet = new MarkSheet();

         /* Note the following field is initialized directly by an object reference because 
            it is declared as public in class.*/
            markSheet.StudentName = "ABC";

           // If you un-comment the following private fields, the program will generate a compile-time error.
           // markSheet.AspMarks = 80;
           // markSheet.JqueryMarks = 60;

            Console.WriteLine("Student name: {0}", markSheet.StudentName);

         /* Following statements set and get these private fields (AspMarks and JqueryMarks) 
            through these methods indirectly. */

            markSheet.SetAspMarks(80);
            Console.WriteLine("Asp.net marks: {0}", markSheet.GetAspMarks());

            markSheet.SetJqueryMarks(60);
            Console.WriteLine("Jquery marks: {0}", markSheet.GetJqueryMarks());
            Console.ReadKey();
        }
        /*
        The Output will be:
        
        Student Name: ABC
        Asp.net marks: 80
        Jquery marks: 60
       */
    }
}

REMEMBER:

  • For successful implementation of the object oriented programming the data members / instance fields should be declared as private and they should be accessed through public set and get methods.





Next Tutorial →


← Previous Tutorial


Posted in: C# Basics, C#.NET

Leave your valuable Comment

Have a natural attraction for women cosmetics and replica watches uk clothes, no
more than two for men the most attractive one, is to make their own driving experience, happy and can serve as the facade of the car, another is to highlight the taste edify sentiment rolex replica watch. The replica rolex is undoubtedly the most fashionable accessories, wear a suit to attend the activities, but also get a decent match on the replica watches .