封装是面向对象编程(OOP)中的一个重要概念,它指的是将一个对象的状态(数据)和行为(方法)包装在一个单一的单元中,并限制对内部细节的直接访问。在 C# 中,封装通过使用访问修饰符和属性(Properties)来实现。

以下是 C# 中封装的基本概念:

1. 访问修饰符:

  •  public: 对象的所有代码块都可以访问。

  •  private: 只有同一类中的代码块可以访问。

  •  protected: 只有同一类或派生类中的代码块可以访问。

  •  internal: 只有同一程序集中的代码块可以访问。

  •  protected internal: 只有同一程序集中的代码块或派生类中的代码块可以访问。

public class MyClass
{
    public int PublicField; // 公共字段,可以被外部代码直接访问

    private int privateField; // 私有字段,只能在同一类中访问

    protected int protectedField; // 受保护字段,可以在同一类或派生类中访问

    internal int internalField; // 内部字段,可以在同一程序集中的任何代码中访问

    protected internal int protectedInternalField; // 受保护内部字段,可以在同一程序集中的任何代码或派生类中访问
}

2. 属性(Properties):

属性是用于封装字段的一种方式,通过属性可以控制字段的读取和写入访问。
public class MyClass
{
    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

上述代码中,Name 属性用于封装 name 字段,通过 get 方法获取值,通过 set 方法设置值。

3. 自动属性:

自动属性是一种简化属性定义的语法糖,编译器会自动生成默认的 get 和 set 方法。
public class MyClass
{
    public string Name { get; set; }
}

4. 只读属性:

只读属性只有 get 方法,一旦初始化后就无法再修改。
public class MyClass
{
    public string Name { get; }
}

5. 访问器的保护级别:

在属性中,你可以使用不同的访问修饰符为 get 和 set 方法指定不同的保护级别。
public class MyClass
{
    private int age;

    public int Age
    {
        get { return age; }
        protected set { age = value; }
    }
}

以上是在 C# 中实现封装的基本概念。封装帮助实现了对象的隐藏和保护,使得对象的实现细节对于使用者来说是不可见的,提高了代码的安全性和可维护性。


转载请注明出处:http://www.zyzy.cn/article/detail/6343/C#