C#中的访问修饰符

以前从来没用过  protected internal 这个修饰符,最近在转JAVA代码中的时候遇到相关问题,总结了下。

不知道总结的是不是完整或正确

 访问修饰符
  针对变量、方法等成员修饰符:
  public :   程序集内部、外部同等无遮挡访问
  protected: 程序集内外子类才可以访问
  private:   本类内可以访问,其他不论程序集内外都不可以
  internal:  程序集内部无遮挡访问,外部不可以访问。
  protected internal: 程序集内部无遮挡访问,程序集外部protected访问级别
  new:隐藏基类中的成员或基类中的嵌套类,若要在派生类中访问被隐藏的成员或嵌套类类,使用完全限定名。
  命名空间下的类不能声明为 private、protected 或 proteced internal,只能为 public 或 internal 
  嵌套类(不是名字空间下的一级元素,如类中声明的类)则可以声明为上面的5中类型  

### C# 中的访问修饰符及其用法 C# 提供了一组访问修饰符来定义类、结构体以及其成员的可访问性范围。这些修饰符决定了程序其他部分能否访问特定类型的成员或实例。 #### 常见的访问修饰符 以下是常见的几种访问修饰符: 1. **`public`** - `public` 表示该类型或成员可以被任何其他代码访问,没有任何限制[^1]。 - 示例: ```csharp public class Bicycle { public void Pedal() { } } ``` 2. **`private`** - `private` 限定只有在同一类内的代码才能访问该成员[^3]。 - 示例: ```csharp class People { private int age; public int Age { get { return age; } set { age = value; } } } ``` 3. **`protected`** - `protected` 成员可以在同一类中访问,并且可以从派生类中访问[^5]。 - 示例: ```csharp class BaseClass { protected string name = "Base"; } class DerivedClass : BaseClass { void PrintName() { Console.WriteLine(name); // 可以访问基类的保护成员 } } ``` 4. **`internal`** - `internal` 类型或成员仅限于当前程序集中的代码访问。 - 示例: ```csharp internal class Helper { public void Assist() { } } ``` 5. **`protected internal`** - 这种组合表示成员既可以由同一个程序集中的任何代码访问,也可以由派生类访问。 - 示例: ```csharp class SharedResource { protected internal void Modify() { } } ``` 6. **`private protected`** - 此修饰符允许成员只在包含它的程序集中被访问,而且只能通过派生类访问。 - 示例: ```csharp class SecureData { private protected string secretKey = "Secret"; } ``` #### 静态与只读字段的影响 除了上述访问修饰符外,还可以结合静态 (`static`) 和只读 (`readonly`) 字段进一步增强功能[^4]。例如: ```csharp class Constants { public const double Pi = 3.14159; } class Configuration { public static readonly string Version = "1.0"; } ``` - 上述例子展示了常量和静态只读变量的区别:前者编译时替换为实际值;后者运行时初始化并保持不变。 --- ### 总结 以上介绍了主要的访问修饰符及其具体应用场景。合理运用这些修饰符能够有效管理代码的安全性和模块化程度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值