C# 访问修饰符

2025年9月6日 | 9分钟阅读

在 C# 编程语言中,访问修饰符是用于定义程序中类、方法、变量、属性和其他成员的可见性、作用域和可访问性的关键字。它是面向对象编程(OOP)的一个重要特性。它有助于实现封装和数据隐藏的原则。通过限制对内部数据和实现细节的未经授权或无意的访问,这些修饰符对封装非常有帮助。

访问修饰符的类型

在 C# 编程语言中,主要有六种类型的访问修饰符。如下所示:

C# Access Modifiers

在这里,我们将逐一讨论这些访问修饰符。

1) C# Public 访问修饰符

在 C# 中,public 访问修饰符是灵活性最高的修饰符。如果一个类成员被声明为 public,那么它可以在同一程序集内部甚至程序集外部的任何代码处被访问。公共类成员通常用于表示类的接口。它可以通过派生类对象进行访问。与其他访问修饰符不同,它没有任何访问限制。

语法

它具有以下语法。

在这个语法中,

  • ClassName: 它声明了一个公共类,这意味着它可以从程序中的任何地方访问。
  • variableName: 它声明了一个指定数据类型的公共成员变量,这意味着它可以从任何其他类或程序集访问。
  • MethodName(): 它声明了一个名为 MethodName 的公共方法,可以从任何地方调用。该方法包含类的逻辑或行为。

C# Public 访问修饰符示例

让我们通过一个例子来说明 C# 中的 public 访问修饰符。

示例

编译并运行

输出

Hello John
Hello Peter Decosta

说明

在这个例子中,我们创建了一个名为 "PublicTest" 的公共类,它包含一个公共变量和一个公共方法。因此,这两个成员都是公共的,可以从类外部访问。在 main 方法中,我们创建了 PublicTest 类的一个实例,并使用了它的变量和方法。最后,我们调用 Msg() 方法,使用 Console.WriteLine() 方法打印输出。

2) C# Protected 访问修饰符

在 C# 中,protected 类成员可以在同一类内部和派生类中访问,即使它们位于不同的程序集中。protected 成员的可访问性在派生类之外受到限制。这意味着类外的任何函数或对象都不能访问该类的 protected 成员。protected 类成员通常用于表示必须对其派生类可访问的类的实现。

语法

它具有以下语法:

在这个语法中,

  • BaseClass: 其他类可以用来获取其特性的类。
  • protected datatype variableName: 它表示 protected 变量,可以在同一类及其子类内部访问。
  • protected void MethodName(): 它定义了 protected 方法,该方法在其自身类和任何派生的子类中均可访问。

C# Protected 访问修饰符示例

让我们通过一个例子来说明 C# 中的 protected 访问修饰符。

示例

编译并运行

输出

The creature makes noise: Meow!

说明

在这个例子中,我们创建了一个 Creature 类,它包含一个名为 MakeNoise() 的 protected 方法,该方法在派生类 Cat 中是可访问的。在 Cat 类的 Meow() 方法内部,message 字段被更新为 "Meow"。之后,我们创建了 cat 类的一个实例,并调用其 Meow() 方法,使用 Console.WriteLine() 方法打印输出。

3) C# Internal 访问修饰符

在 C# 中,internal 访问修饰符是一个程序集级别的访问修饰符。当一个类成员被声明为 internal 时,它只能在同一个程序集内部被访问。它不能从另一个程序集访问,即使该程序集引用了它。

语法

它具有以下语法。

在这个语法中,

  • internal: 它定义了只能在同一项目或程序集内访问的修饰符。
  • ClassName: 它表示类的名称。
  • VariableName: 它定义了变量的名称。
  • MethodName: 它定义了方法的名称。

C# Internal 访问修饰符示例

让我们通过一个例子来说明 C# 中的 internal 访问修饰符。

示例

编译并运行

输出

Hello Michael
Hello Peter Decosta

说明

在这个例子中,我们创建了一个名为 InternalTest 的类,它包含一个 internal 变量和一个 internal 方法。在 main 方法内部,我们创建了 InternalTest 类的一个对象。由于两者都在同一个程序集中,所以 name 变量和 Msg() 方法都是可访问的。最后,我们调用 Msg() 方法,使用 Console.WriteLine() 方法打印输出。

4) C# Private 访问修饰符

在 C# 中,private 访问修饰符用于为变量或函数指定私有可访问性。它是限制性最强的,只能在声明它的类的内部访问。它不能从类外部或由派生类访问。

语法

它具有以下语法。

在这个语法中,

  • ClassName: 它声明了类的名称。
  • variableName: 它表示类内部的私有变量的名称。它只能在定义它的代码块内部访问。
  • MethodName(): 它表示私有方法的名称。这个方法只能在类内部被调用。

C# Private 访问修饰符示例

让我们通过一个例子来说明 C# 中的 private 访问修饰符。

示例

编译并运行

输出

The Result is 300

说明

在这个例子中,我们创建了一个名为 Calc 的类,它包含两个方法:start() 方法和 add() 方法。start() 方法调用 add() 方法,该方法将两个数字 100 和 200 相加。add() 方法是 private 的,这意味着不能从 Calc 类外部直接访问它。在 main 方法内部,我们创建了 Calc 的一个实例并调用 c.start() 方法,然后使用 Console.WriteLine() 函数显示输出。

5) Protected Internal 修饰符

在 C# 中,protected internal 访问修饰符使一个类成员能够被访问:

  • 在同一程序集内被任何类访问。
  • 被派生类访问,即使那些派生类位于不同的程序集中。

换句话说,这个修饰符是 protected 和 internal 访问级别的组合。它可以在同一程序集内部访问,也可以从任何派生类访问,即使该类存在于不同的程序集中。

C# Protected Internal 修饰符示例

让我们通过一个例子来说明 C# 中的 protected internal 修饰符。

示例

编译并运行

输出

SportsCar m: Ferrari

说明

在这个例子中,我们创建了一个名为 Car 的基类,它包含一个字符串变量,该变量被标记为 protected internal 修饰符。之后,我们创建了一个派生类 SportCar,它继承自 Car,因此可以访问 model 字段。在 main 方法内部,我们创建了 SportCar 类的一个对象,然后调用 Display 方法打印出 "SportsCar model: Ferrari"。

6) C# 中的 Private Protected 访问修饰符

在 C# 中,private protected 访问修饰符是 private 和 protected 访问修饰符的组合。它允许类成员在同一个类内部或在同一程序集中的派生类内部被访问。private protected 类成员不能从程序集外部或不同程序集中的派生类访问。

C# Private Protected 访问修饰符示例

让我们通过一个例子来说明 C# 中的 private protected 修饰符。

示例

输出

Welcome to Tpoint tech

说明

在这个例子中,我们创建了一个名为 Tpoint 的类,它包含一个标记为 private protected 修饰符的 Message() 方法。之后,我们创建了一个继承 TPoint 类的 tech 类。在 main 方法内部,我们创建了 tech 类的一个实例,并调用 Show() 方法,使用 Console.WriteLine() 方法打印输出。

C# 中的访问修饰符

这是一个总结 C# 中访问修饰符的表格。

访问说明符同类派生类类外部
Public 访问修饰符是的是的是的
Private 访问修饰符是的不能不能
Protected 访问修饰符是的不能不能
Internal 访问修饰符是的是(如果在同一程序集内)不能
Protected Internal 修饰符是的是(如果在同一程序集内或为派生类)是(如果在同一程序集内)
Private protected 修饰符是的是(仅当在同一程序集内且为派生类)不能

关于 C# 中访问修饰符的要点

以下是关于 C# 中访问修饰符的几个要点:

  • 命名空间中不允许使用访问修饰符,因为它们不强制执行访问控制。
  • 用户一次只能使用一个访问修饰符,除了 private protected 和 protected internal。
  • 在 C# 中,internal 修饰符是类的默认访问修饰符。

结论

总之,C# 访问修饰符是面向对象编程语言的一个关键特性,它决定了类或结构中类型、成员和方法的可见性和可访问性。这些修饰符对于封装非常有帮助,有助于确保数据安全、模块化和代码可维护性。它有几种修饰符,如 public、private、internal、protected、protected internal 和 private protected。它用于维护代码的安全性。

C# 访问修饰符常见问题解答

1) C# 中的访问修饰符是什么?

在 C# 中,访问修饰符是用于定义程序中类、方法、变量、属性和其他成员的可见性、作用域和访问级别的关键字。它是面向对象编程(OOP)语言的一个重要特性。

2) C# 中的主要访问修饰符有哪些?

在 C# 编程中,主要有四种访问修饰符:public、private、protected 和 internal。

3) C# 中类的默认访问修饰符是什么?

在 C# 中,internal 修饰符是类的默认访问级别。

4) 我们可以为一个类或方法应用多个访问修饰符吗?

在 C# 中,我们不能为一个类、方法或成员应用多个访问修饰符。一个类或方法一次只能有一个访问修饰符。

5) C# 中的 internal 访问修饰符是什么?

在 C# 中,internal 修饰符是程序集级别的修饰符。类的 internal 成员可以在同一程序集内被访问。


下一主题C# 封装