Thursday, February 18, 2021

சி ஷார்ப் ஆக்சஸ் மாடிஃபையர்ஸ்.

 



சி ஷார்ப் ஆக்சஸ் மாடிஃபையர்ஸ் என்பது ஒரு ஆப்ஜெக்ட் மற்றும் அதன் மெம்பர்களை எங்கிருந்த படியெல்லாம் அணுகலாம் என்பதாகும்.

எல்லா சி ஷார்ப் டைப் மெம்பர்களும் அதை ஆக்சஸ் செய்யும் லெவலை கொண்டுள்ளது. ஆக்சஸ் லெவலை நாம் அதன் மாடிஃபையர்ஸ் கொண்டு எளிதில் மாற்றலாம்.ஆக்சஸ் மாடிஃபையர்ஸ் மூலம் டேட்டாவை நேரடியாக அனுக முடியாத வண்ணம் பாதுகாக்கலாம்.

சிஷார்ப் ஆனது ஆறு ஆக்சஸ் மாடிஃபையர்களை கொண்டுள்ளது.

அவையாவன:

  • private
  • public
  • protected
  • internal
  • protected internal
  • Private Protected (C# version 7.2 and later)

Private:

ஒரு கிளாஸ் அல்லது ஸ்ட்ரக்டின் பிரைவேட் மெம்பர்களை அதற்குள்மட்டுமே அணுக முடியும்.

using System;

namespace ConsoleApplication1

{

  class PrivateAccess

  {

    private string msg = "This variable is private ";

    private void disp(string msg)

    {

      Console.WriteLine("This function is private : " + msg);

    }

  }

  class Program

  {

    static void Main(string[] args)

    {

      PrivateAccess privateTest = new PrivateAccess();

      Console.WriteLine(privateTest.msg);// Cannot Access private variable here

      privateTest.disp("Hello !!");  // Cannot Access private function  here

    }

  }

}

வெளியீடு:

Error  1          'ConsoleApplication1.PrivateAccess.msg' is inaccessible due to its protection level

Error  2          'ConsoleApplication1.PrivateAccess.disp(string)' is inaccessible due to its protection level

இங்கு பிரைவேட்  வேரியபிள் மற்றும் பிரைவேட் மெத்தட்களை Main ஃபங்க்சனில் இருந்து அனுக முடியவில்லை. ஏனெனில் Main ஃபங்க்சன் தனியாய் program என்ற கிளாஸில் உள்ளது.

ஆனால் Main ஃபங்க்சன் அதே கிளாஸிற்குள் இருந்தால் பிரைவேட் மெம்பர்களை எளிதாக  அணுகலாம்.

சான்று நிரல்.

 

using System;

namespace ConsoleApplication1

{

  class Program

  {

    private string msg = "This variable is private ";

    private void disp(string msg)

    {

      Console.WriteLine("This function is private : " + msg);

    }

    static void Main(string[] args)

    {

      Program pr = new Program();

      Console.WriteLine(pr.msg);// / Accessing private variable  inside the class

      pr.disp("Hello !!");  // Accessing private function  inside the class

    }

  }

}

வெளியீடு:

 

This variable is private

This function is private : Hello !!

PUBLIC:

ஒரு கிளாசின் பப்ளிக் மெம்பர்களை எங்கிருந்து வேண்டும் என்றாலும் அணுகலாம். எந்த வித த்டையும் கிடையாது.

அதே கிளாஸ் அல்லது வெறொரு கிளாஸ் அதே அசெம்பிளி அல்லது வேறொரு அசெம்பிளி எங்கிருந்து வேண்டும் என்றாலும் அணுகலாம்.

சான்று நிரல்.

using System;

namespace ConsoleApplication1

{

  class PublicAccess

  {

    public string msg = "This variable is public";

    public void disp(string msg)

    {

        Console.WriteLine("This function is public : " + msg);

    }

  }

  class Program

  {

    static void Main(string[] args)

    {

        PublicAccess pAccess = new PublicAccess();

        Console.WriteLine(pAccess.msg); // Accessing public variable

        pAccess.disp("Hello !!"); // Accessing public function

    }

  }

}

வெளியீடு:

 

This variable is public

This function is public : Hello !!

PROTECTED:

பிரடெக்டடு மெம்பர்களை அந்த கிளாஸ் அல்லது அதை இன்ஹெரிட் செய்யும் கிளாஸ் ஆகியவற்றில் இருந்து மட்டும் அணுகலாம்.  வேறு எங்கிருந்தும் அணுக முடியாது.

சான்று நிரல்.

using System;

namespace ConsoleApplication1

{

  class ProtectedAccess

  {

    protected string msg = "This variable is protected  ";

    protected void disp(string msg)

    {

      Console.WriteLine("This function is protected : " + msg);

    }

  }

  class Program : ProtectedAccess

  {

    static void Main(string[] args)

    {

      Program pr = new Program();

   

 

  Console.WriteLine(pr.msg); // Accessing protected variable

      pr.disp("Hello !!");  // Accessing protected function

    }

  }

மேலே உள்ள நிரலில் PROGRAM கிளாஸ் ஆனது ProtectedAccess என்ற கிளாசை இன்ஹெரிட் செய்கின்றது. எனவே ProtectedAccess கிளாசின் பிரடக்டடு மெம்பர்களை Program கிளாசில் எளிதில் அணுக முடிகின்றது.

Internal.

ஒரு அசெம்பிளியில் உள்ள கிளாசின் இன்டெர்னல் மெம்பரை அதே அசென்பிளியில் உள்ளே எங்கிருந்து வேண்டும் என்றாலும் அணுகலாம்.

சான்று நிரல்.

 

using System;

namespace ConsoleApplication1

{

  class InternalAccess

  {

    internal string msg = "This variable is internal";

    internal void disp(string msg)

    {

      Console.WriteLine("This function is internal : " + msg);

    }

  }

  class Program

  {

    static void Main(string[] args)

    {

      InternalAccess iAccess = new InternalAccess();

      Console.WriteLine(iAccess.msg); // Accessing internal variable

      iAccess.disp("Hello !!"); // Accessing internal function

      Console.ReadKey();

    }

  }

}

வெளியீடு:

 

This variable is internal

This function is internal : Hello !!

Protected internal.

ஒரு கிளாசின் பிரடக்டடு இன்டெர்னல் மெம்பர்களை அதே அசெம்பிளி மற்றும் வேறொரு அசெம்பிளியில் அந்த கிளாசை இன்ஹெரிட் செய்யுல் கிளாஸில் இருந்து அணுகலாம்.

சான்று நிரல்.

 

using System;

namespace ConsoleApplication1

{

  class InternalAccess

  {

    protected internal string msg = "This variable is  protected internal";

    protected internal void disp(string msg)

    {

        Console.WriteLine("This function is protected internal : " + msg);

    }

  }

  class Program

  {

    static void Main(string[] args)

    {

      InternalAccess iAccess = new InternalAccess();

      Console.WriteLine(iAccess.msg); // Accessing internal variable

      iAccess.disp("Hello !!"); // Accessing internal function

      Console.ReadKey();

    }

  }

}

வெளியீடு:

 

This variable is  protected internal

This function is protected internal : Hello !!

Private protected.

இந்த ஆக்சஸ் மாடிஃபையர் சி ஷார்ப் 7.2-ல் இருந்து பயன்பாட்டிற்கு வந்துள்ளது. இந்த மெம்பர்களை அதே அசெம்பிளியில் உள்ள அதை இன்ஹெரிட் செய்யும் கிளாசில் இருந்து மட்டுமே அணுக முடியும்.

சான்று நிரல்.

 

// Assembly1.cs

// Compile with: /target:library

public class MyBaseClass

{

    private protected int count = 0;

}

public class MyDerivedClass1 : MyBaseClass

{

  void callMe()

  {

    MyBaseClass obj = new MyBaseClass();

    obj.count = 5;

    // Error CS1540, because the variable count can only be accessed by

    // classes derived from MyBaseClass.

    count = 5; // OK, accessed through the current derived class instance

  }

}

நன்றி

முத்து கார்த்திகேயன்,மதுரை

 

 

 

 

ads Udanz

No comments:

Post a Comment