一、访问修饰符的基本说明
1.public
: 公有的,是类和类成员的访问修饰符,访问不受限制
2.private
: 私有的,是一个成员访问修饰符,不能修饰类,只有在声明它的类和结构内部可以访问
3.internal
: 内部的,是类和类成员的访问修饰符,同一个程序集中的所有类都可以访问,可访问性低于public
4.protected
: 受保护的,是一个成员访问修饰符,只能在它的类和派生类中访问
5.protected internal
: 访问限于当前程序集或派生类
6.private protected
: 访问限于当前程序集中该类的派生类或该类内部
private
、protected
、protected internal
或private protected
不能修饰类
什么是程序集呢?
简而言之,一个程序集就是一个项目,一个命名空间,一个dll文件
注意点:
如果在成员声明中未指定访问修饰符,则使用默认的访问修饰符
类/枚举/接口/结构体默认访问修饰符是internal,仅限该程序集内部访问
默认的成员可访问性 | 该成员允许声明的可访问性 | |
class | private | public protected internal private protected internal |
struct | private | public internal private |
interface | public | 无 |
enum | public | 无 |
Example:
namespace TestModifier
{
public class Class1
{
//访问不受限制
public string namePublic = null;
//当前程序集
internal string nameInternal = null;
//只能在类内部访问
private string namePrivate = null;
//只能在该类及其派生类内部使用
protected string nameProtected = null;
//当前程序集及派生类
protected internal string nameProtectedInternal = null;
//C# 7.2 该类及其派生类内部使用
private protected string namePrivateProtected = null;
}
class Class2 : Class1
{
private string name1;
private string name2;
private string name3;
private string name4;
private string name5;
public void Method1()
{
name1 = new Class1().namePublic;
name2 = new Class1().nameInternal;
name3 = new Class1().nameProtectedInternal;
//派生类
name4 = base.nameProtected;
//派生类
name5 = base.namePrivateProtected;
}
}
}
二、声明修饰符
1.partical
: 在整个同一程序集中定义分部类和分部方法。在处理大型项目或自动生成的代码(如 Windows 窗体设计器提供的代码)时,在多个文件间拆分类、结构或接口类型可能会非常有用。分部类型可以包含分部方法。
分部类:
-
处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理
-
当使用自动生成的源文件时,你可以添加代码而不需要重新创建源文件。 Visual Studio 在创建Windows 窗
体、Web 服务包装器代码等时会使用这种方法。 你可以创建使用这些类的代码,这样就不需要修改由
Visual Studio生成的文件 -
若要拆分类定义,请使用 partial 关键字修饰符
class Program
{
/// <summary>
/// 声明修饰符
/// partical: 分部类和分部方法
/// </summary>
/// <param name="args"></param>
static void Main(string[] args