当前位置:首页 > C# > 正文

C#访问修饰符详解(小白也能看懂的public、private、protected与internal用法指南)

在C#编程中,访问修饰符(Access Modifiers)是控制类、方法、字段等成员可见性和访问权限的重要工具。掌握这些修饰符,不仅能提升代码的安全性,还能帮助你设计出结构更清晰、可维护性更强的程序。

C#访问修饰符详解(小白也能看懂的public、private、protected与internal用法指南) C#访问修饰符 public private protected internal 第1张

什么是访问修饰符?

访问修饰符决定了其他代码是否可以访问某个类或其成员(如字段、属性、方法等)。C# 提供了以下几种主要的访问修饰符:

  • public:完全公开,任何地方都能访问。
  • private:私有,仅在当前类内部可访问。
  • protected:受保护,当前类及其派生类可访问。
  • internal:内部,同一程序集(Assembly)内可访问。

1. public(公开)

使用 public 修饰的成员可以在任何地方被访问,包括其他类、其他项目(只要引用了该程序集)。

public class Car{    public string Brand = "Toyota";    public void StartEngine()    {        Console.WriteLine("Engine started!");    }}// 在另一个类中可以访问Car myCar = new Car();Console.WriteLine(myCar.Brand);      // ✅ 可以访问myCar.StartEngine();                 // ✅ 可以调用

2. private(私有)

private 是最严格的访问级别。只有定义它的类内部才能访问,外部完全不可见。

public class BankAccount{    private decimal balance = 1000m;    public void Deposit(decimal amount)    {        if (amount > 0)            balance += amount; // ✅ 类内部可以访问    }    public decimal GetBalance()    {        return balance; // ✅ 通过公共方法暴露私有数据    }}// 外部尝试访问会报错BankAccount account = new BankAccount();// Console.WriteLine(account.balance); // ❌ 编译错误!

3. protected(受保护)

protected 允许当前类和它的子类访问该成员,常用于继承场景。

public class Animal{    protected string name = "Generic Animal";    protected void MakeSound()    {        Console.WriteLine("Some sound...");    }}public class Dog : Animal{    public void Bark()    {        Console.WriteLine($"{name} says: Woof!"); // ✅ 子类可访问        MakeSound();                              // ✅ 子类可调用    }}Dog myDog = new Dog();// Console.WriteLine(myDog.name); // ❌ 外部不能访问myDog.Bark(); // ✅ 正常输出

4. internal(内部)

internal 表示“同一程序集内可见”。如果你的项目由多个 .cs 文件组成但属于同一个项目(即同一个 .dll 或 .exe),那么它们可以互相访问 internal 成员。

// File1.csinternal class Helper{    internal static void Log(string message)    {        Console.WriteLine($"[LOG] {message}");    }}// File2.cs(同一项目中)public class Program{    public static void Main()    {        Helper.Log("Application started."); // ✅ 同一程序集内可访问    }}// 如果在另一个项目中引用此程序集,则无法访问 Helper 类

总结与最佳实践

合理使用 C#访问修饰符 是编写高质量代码的关键:

  • 字段通常设为 private,通过 public 属性或方法暴露必要功能(封装原则)。
  • 类默认是 internal,若希望被其他项目使用,应声明为 public
  • 在继承体系中,使用 protected 允许子类扩展父类行为,同时隐藏实现细节。
  • 使用 internal 限制 API 的暴露范围,避免外部误用。

记住这句口诀:“能私不公,能内不外”——在满足功能的前提下,尽量使用最小的访问权限。

希望通过本教程,你已经掌握了 C#访问修饰符 的核心用法。无论是 publicprivateprotected 还是 internal,它们都是你构建健壮、安全、可维护 C# 应用的基石。