c#基础概念之internal 修饰符有什么作用

本文详细解析了C#中internal修饰符的作用范围及与其他修饰符如protected结合使用的效果,并通过具体示例展示了不同场景下成员的访问权限。

internal 修饰符可以用于类型或成员,使用该修饰符声明的类型或成员只能在同一程集内访问

接口的成员不能使用 internal 修饰符

值得注意的是,如果为 internal 成员加上了 protected 修饰符,这时的访问级别为 internal 或 protected。只是看字面意思容易弄错,许多人认为 internal protected 应该是“只有同一个程序集中的子类可以访问”,但其实它表示“同一个程序集中的所有类,以及所有程序集中的子类都可以访问”

示例

Example05Lib 项目的 Class1

using System;
using System.Collections.Generic;
using System.Text;
 
namespace Example05Lib
{
    public class Class1
    {
        internal String strInternal = null;
        public String strPublic;
        internal protected String strInternalProtected = null;
    }
}
结果
Example05Lib 项目的 Class2 类可以访问到 Class1 的 strInternal 成员,当然也可以访问到 strInternalProtected 成员,因为他们在同一个程序集里
Example05 项目里的 Class3 类无法访问到 Class1 的 strInternal 成员,因为它们不在同一个程序集里。但却可以访问到 strInternalProtected 成员,因为 Class3 是 Class1 的继承类
Example05 项目的 Program 类既无??ǚ梦实?Class1 的 strInternal 成员,也无法访问到 strInternalProtected 成员,因为它们既不在同一个程序集里也不存在继承关系
 
C# 中的修饰符关键字包含访问修饰符,二者在概念作用和范围上存在差异。 修饰符关键字是一个更宽泛的概念,它可分为访问修饰符、方法修饰符、约束修饰符和其他修饰符等类别。修饰符关键字不仅能控制对象的访问权限,还能对类、方法、属性等的行为、实现方式、类型参数的特性等方面进行修饰。例如,`abstract` 修饰符指示被修改内容的实现已丢失或不完整,可用于类、方法、属性等;`async` 修饰符可将方法、lambda 表达式或匿名方法指定为异步;`const` 关键字用于声明常量字段或常量局部变量等[^2][^3]。 访问修饰符修饰符关键字中的一个子集,其主要作用是控制对象的访问权限。访问修饰符包括 `private`(私有,访问限于包含类)、`protected`(受保护,访问限于包含类或派生自包含类的类型)、`internal`(程序集内部,访问限于当前程序集)、`protected internal`(只有本程序内或者继承于该类的类型可以访问)、`public`(公开,访问不受限制)以及 `private protected`(自 C# 7.2 之后可用,访问限于包含类或当前程序集中派生自包含类的类型)。可以使用访问修饰符的对象有 `namespace`(命名空间)、`class`(类)、`struct`(结构)、`enum`(枚举)、`interface`(接口)、`delegate`(委托)、`function`(函数)和变量等[^1][^3]。 ### 代码示例 ```csharp // 定义一个公共类 public class MyClass { // 私有字段,只能在类内部访问 private int privateField; // 受保护字段,可在类内部和派生类中访问 protected int protectedField; // 程序集内部字段,只能在当前程序集内访问 internal int internalField; // 公开字段,可在任何地方访问 public int publicField; // 抽象方法,需要在派生类中实现 public abstract void AbstractMethod(); // 异步方法 public async Task AsyncMethod() { await Task.Delay(1000); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值