ตัวแก้ไขการเข้าถึงใช้เพื่อระบุขอบเขตของความสามารถในการเข้าถึงของสมาชิกของคลาสหรือประเภทของคลาสเอง ตัวปรับแต่งการเข้าถึงมีหกประเภท
-
สาธารณะ
-
ส่วนตัว
-
ป้องกัน
-
ภายใน
-
ป้องกันภายใน
-
การป้องกันส่วนตัว
ตัวแก้ไขการเข้าถึงสาธารณะ
ออบเจ็กต์ที่ใช้ตัวแก้ไขการเข้าถึงสาธารณะสามารถเข้าถึงได้จากทุกที่ในโปรเจ็กต์โดยไม่มีข้อจำกัด
ตัวอย่าง
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 และใหม่กว่า