C# 中有哪些不同的访问修饰符?


访问修饰符用于指定类成员或类本身类型的可访问性范围。共有六种不同的访问修饰符。

  • 公共 (Public)

  • 私有 (Private)

  • 受保护 (Protected)

  • 内部 (Internal)

  • 受保护内部 (Protected Internal)

  • 私有受保护 (Private Protected)

公共访问修饰符

实现公共访问修饰符的对象可以在项目中的任何地方访问,没有任何限制。

示例

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

受保护访问修饰符

protected 关键字表示该对象可以在类内部以及所有从该类派生的类中访问。

示例

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

内部访问修饰符

对于 Internal 关键字,访问仅限于当前项目程序集中定义的类。

示例

项目 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.
      }
   }
}

受保护内部访问修饰符 −

受保护内部访问修饰符是 protected 和 internal 的组合。因此,我们只能在同一程序集中或其他程序集中派生类的类中访问受保护内部成员。

示例

项目 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
      }
   }
}

私有受保护访问修饰符

私有受保护访问修饰符是 private 和 protected 关键字的组合。我们可以在包含类内部或从包含类派生的类中访问成员,但仅限于同一程序集(项目)。因此,如果我们尝试从另一个程序集访问它,我们将收到错误。此修饰符在 C# 7.2 及更高版本中有效。

更新于: 2020 年 8 月 4 日

2K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.