📜  C#访问修饰符(1)

📅  最后修改于: 2023-12-03 15:30:19.530000             🧑  作者: Mango

C# 访问修饰符

介绍

在 C# 中,访问修饰符用于控制类成员(字段、方法、属性等)的可访问性。它们有 5 种级别:

  1. public:公开的,可以被该程序集中的所有代码访问,也可以被其他程序集中的代码访问。
  2. private:私有的,只能被定义该成员的类访问。
  3. protected:受保护的,只能被定义该成员的类或该类的派生类访问。
  4. internal:内部的,只能被该程序集中的代码访问。
  5. protected internal:组合了 protected 和 internal 的特性,只能被该程序集中的代码或该类的派生类访问。
示例
public class Foo
{
    public int PublicField;
    private int PrivateField;
    protected int ProtectedField;
    internal int InternalField;
    protected internal int ProtectedInternalField;
}

public class Bar : Foo
{
    public void Test()
    {
        this.PublicField = 1;
        // this.PrivateField = 1; // Error: 'Foo.PrivateField' is inaccessible due to its protection level
        this.ProtectedField = 1;
        this.InternalField = 1;
        this.ProtectedInternalField = 1;
    }
}

public class Baz
{
    void Test()
    {
        Foo foo = new Foo();
        foo.PublicField = 1;
        // foo.PrivateField = 1; // Error: 'Foo.PrivateField' is inaccessible due to its protection level
        // foo.ProtectedField = 1; // Error: 'Foo.ProtectedField' is inaccessible due to its protection level
        foo.InternalField = 1;
        foo.ProtectedInternalField = 1;
    }
}

在这个示例中,我们创建了一个名为 Foo 的类,并定义了 5 个不同的字段,每个字段都有不同的访问修饰符。然后我们创建了一个继承自 Foo 的类 Bar,通过实例化并访问其字段来测试这些访问修饰符的可访问性。最后,我们创建了另一个名为 Baz 的类,并尝试访问 Foo 实例的字段,以测试不同程序集之间字段的可访问性。

结论

访问修饰符是 C# 中的一个重要概念,用于控制类成员的可访问性。它们有 5 种级别,使用时需要根据具体情况进行选择。通常情况下,应该尽量将成员保持私有,只在必要的情况下对外提供公有接口。