• C#访问修饰符


    C#中的访问修饰符用于控制类型成员(如字段、属性、方法等)的访问级别。以下是C#中常用的访问修饰符:

    1. public:公共访问级别,没有任何访问限制。在任何其他类或程序集中都可以访问标记为 public 的成员。

    2. private:私有访问级别,只能在定义它们的类内部访问。这是默认访问级别,如果没有指定访问修饰符,则成员被认为是私有的。

    3. protected:受保护访问级别,允许在定义成员的类内部以及派生自该类的子类中访问。

    4. internal:内部访问级别,只能在相同程序集内部访问。对于程序集外部的代码来说,这些成员是不可见的。

    5. protected internal:受保护的内部访问级别,允许在同一程序集中的任何类或派生自该类的子类中访问。

    6. private protected:私有受保护访问级别,只允许在定义成员的类的同一程序集内的派生类中访问。

    下面是包含这些访问修饰符的示例代码:

    using System;
    
    public class MyClass
    {
        public int PublicField;           // 公共字段
        private int PrivateField;         // 私有字段
        protected int ProtectedField;     // 受保护字段
        internal int InternalField;       // 内部字段
        protected internal int ProtectedInternalField; // 受保护的内部字段
        private protected int PrivateProtectedField;   // 私有受保护字段
    
        public void MyMethod()
        {
            // 这里可以访问所有上述字段
        }
    }
    
    public class DerivedClass : MyClass
    {
        public void AnotherMethod()
        {
            // 这里可以访问 PublicField, ProtectedField, ProtectedInternalField 和 PrivateProtectedField
            // 无法访问 PrivateField 和 InternalField(除非这两个类在同一个程序集中)
        }
    }
    
    class Program
    {
        static void Main()
        {
            MyClass myClass = new MyClass();
    
            // 可以访问 myClass.PublicField 和 myClass.InternalField
            // 无法访问 PrivateField, ProtectedField, ProtectedInternalField 和 PrivateProtectedField
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    在这个示例中,MyClass 类中包含了各种访问修饰符的字段,以及一个公共方法 MyMethodDerivedClass 类继承自 MyClass,它可以访问部分但不是全部的字段。Program 类的 Main 方法展示了从类外部可以访问哪些字段。

  • 相关阅读:
    servlet01初级
    vue中插槽slot
    Go中调用外部命令的几种姿势
    10.导弹拦截
    运动健身的一些心得经验
    论文解读(LightGCL)《LightGCL: Simple Yet Effective Graph Contrastive Learning for Recommendation》
    awvs无法启动问题
    Golang依赖管理(GOPATH->vendor->Go Module)
    SSM 前端使用AJAX方式,fromdata文件格式上传二进制流文件
    vue前端 页面样式强制覆盖
  • 原文地址:https://blog.csdn.net/yao_hou/article/details/134484608