博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#访问修饰符
阅读量:4709 次
发布时间:2019-06-10

本文共 1256 字,大约阅读时间需要 4 分钟。

 

最近一个项目编译遇到一个问题:无法访问一个接口。查看代码发现该接口定义时没有显示修饰符,加上public编译通过玩。网上查一下复习基础,亲自验证:定义一个类,且修饰符为praivate或protected

private class TestAccess

   }

编译报错:在命名空间中定义的元素无法显示的声明为 private, protected, protected internal

访问修饰符共5类:public-公共,internal - 内部的,private - 私有的, protected - 受保护的, protected internal。能在

命名空间中定义的元素有:类(class),结构(struct),委托(delegate),接口(interface),枚举(enum)。

 

1.命名空间下的元素的默认访问修饰符

命名空间下的元素的默认访问修饰符internal,命名空间下只能使用两种访问修饰符public和internal

public : (访问不受限制) 同一程序集的其他任何代码或引用该程序集的其他程序集都可以访问该类型或成员。

internal : (访问仅限于当前程序集) 同一程序集中的任何代码都可以访问该类型或成员,但其他程序集不可以访问。

2.各类型中的成员的默认访问修饰符

剩下的修饰符主要是正对继承这个语言特性的,拥有继承的类型有两个类(class)和接口(interface)。public,internal同样可以用于类型成员。

private : (访问仅限于当前所在的类) 同一类和结构的代码可以访问该类型和成员。

protected : (访问仅限于当前所在的类或从包含类派生的类) 同一类和派生(继承特性)类中的代码可以访问该类型和成员。

protected internal :  (访问仅限于从包含类派生的当前程序集或类) 同一程序集中的任何代码或其他程序集任何派生类

可以访问该类型或成员。

接口(interface)

接口成员访问修饰符默认为public,且不能显示使用访问修饰符。

类(class)

构造函数默认为public访问修饰符。

析构函数不能显示使用访问修饰符且默认为private访问修饰符。 

类的成员默认访问修饰符为private; 

枚举(enum)

枚举类型成员默认为public访问修饰符,且不能显示使用修饰符。

结构(struct) 

结构成员默认为private修饰符。 

结构成员无法声明为protected成员,因为结构不支持继承。 

嵌套类型

嵌套类型的默认访问修饰符为private。 和类,结构的成员默认访问类型一致。

嵌套类型的可访问性取决于它的可访问域,该域是由已声明的成员可访问性和直接包含类型的可访问域这二者共同确定的。

但是,嵌套类型的可访问域不能超出包含它的类型的可访问域。

 

转载于:https://www.cnblogs.com/come-on-come-on/p/4648810.html

你可能感兴趣的文章
memcached 细究(三)
查看>>
RSA System.Security.Cryptography.CryptographicException
查看>>
[解题报告] 100 - The 3n + 1 problem
查看>>
Entity Framework 学习高级篇1—改善EF代码的方法(上)
查看>>
Mybatis逆向工程配置文件详细介绍(转)
查看>>
String类的深入学习与理解
查看>>
OnePage收集
查看>>
yahoo的30条优化规则
查看>>
[CCF2015.09]题解
查看>>
[NYIST15]括号匹配(二)(区间dp)
查看>>
json_value.cpp : fatal error C1083: 无法打开编译器生成的文件:No such file or directory
查看>>
洛谷 P1101 单词方阵
查看>>
Swift DispatchQueue
查看>>
C#和JAVA 访问修饰符
查看>>
小甲鱼OD学习第1讲
查看>>
HDU-1085 Holding Bin-Laden Captive-母函数
查看>>
php提示undefined index的几种解决方法
查看>>
LRJ
查看>>
Struts2环境搭建
查看>>
Linux: Check version info
查看>>