Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ตัวแก้ไขการเข้าถึงประเภทต่าง ๆ ที่มีอยู่ใน C # มีอะไรบ้าง


ตัวแก้ไขการเข้าถึงใช้เพื่อระบุขอบเขตของความสามารถในการเข้าถึงของสมาชิกของคลาสหรือประเภทของคลาสเอง ตัวปรับแต่งการเข้าถึงมีหกประเภท

  • สาธารณะ

  • ส่วนตัว

  • ป้องกัน

  • ภายใน

  • ป้องกันภายใน

  • การป้องกันส่วนตัว

ตัวแก้ไขการเข้าถึงสาธารณะ

ออบเจ็กต์ที่ใช้ตัวแก้ไขการเข้าถึงสาธารณะสามารถเข้าถึงได้จากทุกที่ในโปรเจ็กต์โดยไม่มีข้อจำกัด

ตัวอย่าง

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name);
         //Person Name is accessible as it is public
      }
   }
   public class Person{
      public string Name = "Mark";
   }
}

ตัวแก้ไขการเข้าถึงส่วนตัว

อ็อบเจ็กต์ที่ใช้ตัวแก้ไขการเข้าถึงส่วนตัวสามารถเข้าถึงได้ภายในคลาสหรือโครงสร้างเท่านั้น ด้วยเหตุนี้ เราจึงไม่สามารถเข้าถึงได้จากภายนอกชั้นเรียนที่สร้างขึ้น

ตัวอย่าง

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name);
         //Since Name is private it is not accessible in Program class.
         // Error: Person.Name is inaccessible due to its protection level.
      }
   }
   public class Person{
      private string Name = "Mark";
   }
}

ตัวแก้ไขการเข้าถึงที่มีการป้องกัน

คีย์เวิร์ดที่มีการป้องกันบ่งบอกว่าวัตถุสามารถเข้าถึงได้ภายในคลาสและในทุกคลาสที่มาจากคลาสนั้น

ตัวอย่าง

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Employee employee = new Employee();
         employee.Print(); //Output: Mark
         Person person = new Person();
         Console.WriteLine(person.Name);
         // Error: Person.Name is inaccessible due to its protection level.
      }
   }
   public class Person{
      protected string Name = "Mark";
   }
   public class Employee : Person{
      public void Print(){
         Console.WriteLine(Name);
      }
   }
}

ตัวแก้ไขการเข้าถึงภายใน

สำหรับคีย์เวิร์ดภายใน การเข้าถึงจะจำกัดเฉพาะคลาสที่กำหนดไว้ภายในแอสเซมบลีของโปรเจ็กต์ปัจจุบัน

ตัวอย่าง

โครงการ 1

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name); //Output: Mark
      }
   }
   public class Person{
      internal string Name = "Mark";
   }
}

ผลลัพธ์

Mark

โครงการ 2

using MyApplication;
using System;
namespace Project2{
   public class Project2Class{
      public void Print(){
         Person person = new Person();
         Console.WriteLine(person.Name);
         // Error: Person.Name is inaccessible due to its protection level.
      }
   }
}

ตัวแก้ไขการเข้าถึงภายในที่มีการป้องกัน -

ตัวแก้ไขการเข้าถึงภายในที่ได้รับการป้องกันเป็นการผสมผสานระหว่างการป้องกันและภายใน ด้วยเหตุนี้ เราจึงสามารถเข้าถึงสมาชิกภายในที่มีการป้องกันได้เฉพาะในแอสเซมบลีเดียวกันหรือในคลาสที่ได้รับในแอสเซมบลีอื่น

ตัวอย่าง

โครงการ 1

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name); //Output: Mark
      }
   }
   public class Person{
      protected internal string Name = "Mark";
   }
}

ผลลัพธ์

Mark

โครงการ 2

using MyApplication;
using System;
namespace Project2{
   public class Project2Class : Person{
      public void Print(){
         Console.WriteLine(Name); //Output: Mark
      }
   }
}

ตัวแก้ไขการเข้าถึงแบบส่วนตัวที่มีการป้องกัน

ตัวแก้ไขการเข้าถึงที่ได้รับการป้องกันแบบส่วนตัวคือการรวมกันของคำหลักส่วนตัวและที่ได้รับการป้องกัน เราสามารถเข้าถึงสมาชิกภายในคลาสที่มีหรือในคลาสที่มาจากคลาสที่มี แต่อยู่ในแอสเซมบลีเดียวกัน (โครงการ) เท่านั้น ดังนั้น หากเราพยายามเข้าถึงจากแอสเซมบลีอื่น เราจะได้รับข้อผิดพลาด ตัวแก้ไขนี้ใช้ได้ใน C# เวอร์ชัน 7.2 และใหม่กว่า