Computer >> Máy Tính >  >> Lập trình >> C#

Các loại công cụ sửa đổi quyền truy cập khác nhau có sẵn trong C # là gì?

Các công cụ sửa đổi quyền truy cập được sử dụng để chỉ định phạm vi khả năng truy cập của một thành viên của một lớp hoặc kiểu của chính lớp đó. Có sáu loại công cụ sửa đổi quyền truy cập khác nhau.

  • Công khai

  • Riêng tư

  • Được bảo vệ

  • Nội bộ

  • Nội bộ được bảo vệ

  • Được bảo vệ riêng tư

Công cụ sửa đổi quyền truy cập công cộng

Các đối tượng triển khai công cụ sửa đổi quyền truy cập công cộng có thể truy cập được từ mọi nơi trong dự án mà không có bất kỳ hạn chế nào.

Ví dụ

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";
   }
}

Công cụ sửa đổi quyền truy cập riêng tư

Các đối tượng triển khai công cụ sửa đổi quyền truy cập riêng tư chỉ có thể truy cập được bên trong một lớp hoặc một cấu trúc. Do đó, chúng tôi không thể truy cập chúng bên ngoài lớp chúng được tạo.

Ví dụ

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";
   }
}

Công cụ sửa đổi quyền truy cập được bảo vệ

Từ khóa được bảo vệ ngụ ý rằng đối tượng có thể truy cập được bên trong lớp và trong tất cả các lớp dẫn xuất từ ​​lớp đó.

Ví dụ

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);
      }
   }
}

Công cụ sửa đổi truy cập nội bộ

Đối với từ khóa Internal, quyền truy cập chỉ giới hạn đối với các lớp được xác định trong nhóm dự án hiện tại.

Ví dụ

Dự án 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";
   }
}

Đầu ra

Mark

Dự án 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.
      }
   }
}

Công cụ sửa đổi quyền truy cập nội bộ được bảo vệ -

Công cụ sửa đổi quyền truy cập nội bộ được bảo vệ là sự kết hợp của bảo vệ và nội bộ. Do đó, chúng ta chỉ có thể truy cập thành viên nội bộ được bảo vệ trong cùng một hội đồng hoặc trong một lớp dẫn xuất trong các hội đồng khác.

Ví dụ

Dự án 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";
   }
}

Đầu ra

Mark

Dự án 2 -

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

Công cụ sửa đổi quyền truy cập được bảo vệ riêng

Công cụ sửa đổi quyền truy cập được bảo vệ riêng tư là sự kết hợp của các từ khoá riêng tư và được bảo vệ. Chúng ta có thể truy cập các thành viên bên trong lớp chứa hoặc trong một lớp dẫn xuất từ ​​lớp chứa, nhưng chỉ trong cùng một assembly (dự án). Do đó, nếu chúng ta cố gắng truy cập nó từ một assembly khác, chúng ta sẽ gặp lỗi. Công cụ sửa đổi này hợp lệ trong C # phiên bản 7.2 trở lên.