了解 C# 中的访问修饰符

访问修饰符是 C# 中面向对象编程的基本部分。它们决定代码中类型和成员的可见性和可访问性,有助于实现封装的概念。在本文中,我们将以清晰实用的方式探索 C# 中可用的所有访问修饰符。

**什么是访问修饰符?**

访问修饰符是定义程序各个部分如何访问类、方法、属性和代码的其他成员的关键字。让我们探索下面的修饰符:

  • 民众
  • 私人的
  • 受保护
  • 内部的
  • 让我们详细了解每一个!

    **1. 公众**

    公共修饰符是所有修饰符中最宽容的。可以从代码中的任何位置访问公共成员,无论是在同一个程序集内还是在引用项目的其他程序集中。

    public class Customer
    {
        // Propriedade pública que pode ser acessada de qualquer lugar
        public string Name { get; set; }
    
        // Método público que pode ser chamado de qualquer lugar
        public void DisplayInfo()
        {
            Console.WriteLine($"Customer: {Name}");
        }
    }

    **2. 私人**

    私有访问修饰符的限制性最强。私有成员只能在声明它们的类内访问。

    public class BankAccount
    {
        // Campo privado que só pode ser acessado dentro desta classe
        private decimal _balance;
    
        // Método privado que só pode ser chamado dentro desta classe
        private void ValidateAmount(decimal amount)
        {
            if (amount <= 0)
                throw new ArgumentException("O valor deve ser maior que zero");
        }
    
        public void Deposit(decimal amount)
        {
            ValidateAmount(amount); // Ok: método privado chamado dentro da classe
            _balance += amount;     // Ok: campo privado acessado dentro da classe
        }
    }

    **3. 受保护**

    protected 修饰符允许在类本身中以及从该类继承的类(子类)访问成员。

    public class Animal
    {
        // Campo protegido que pode ser acessado por classes filhas
        protected string Species;
    
        // Método protegido que pode ser chamado por classes filhas
        protected virtual void MakeSound()
        {
            Console.WriteLine("Som genérico de animal");
        }
    }
    
    public class Dog : Animal
    {
        public void Initialize()
        {
            Species = "Canino";    // Ok: campo protected acessado na classe filha
            MakeSound();           // Ok: método protected acessado na classe filha
        }
    }

    **4. 内部**

    internal 修饰符允许成员只能在同一个项目内被访问。

    // Classe internal só pode ser usada dentro do mesmo projeto
    internal class ConfigurationManager
    {
        // Propriedade internal só pode ser acessada dentro do mesmo projeto
        internal string DatabaseConnection { get; set; }
    }

    **结论**

    访问修饰符是控制类成员的可见性和访问权限的强大工具。正确使用修饰符有助于:

    保持良好的封装

    减少代码不同部分之间的耦合

    防止滥用你的课程

    让代码维护更加简单