【C#学习】24类的访问级别
纠正:【声明】 类,【创建】 实例
声明类的位置
(1)名称空间中(最常见)
(2)全局名称空间中——所有显式的名称空间之外
(3)类中:声明在类体中的类是【成员类】,它像属性,方法,字段一样属于【类成员】
声明VS定义
- 在C++中,类的声明与定义是可分开的,并且编程规范建议分开写
- 但在C#中,类的声明与定义不能分开,必须合在一起,所以可以理解为【声明即定义】
类声明的语法格式
虽然语法格式看起来非常复杂,但是绝大多数类的声明都简单清晰,因为如果把类声明的所有语法元素都用上,这个类的功能就模糊了,意义也就不大了
-
在类的声明中,有三个部分不能省略
(1)class关键字:表明要声明一个类
(2)identifier,标识符:也就是类名(类的命名方式为Pascal,大写每个单词首字母)
(3)类体 -
类修饰符 【modifier】
类修饰符可按逻辑进行分组,比如说:
(1)按继承关系:abstract,sealed
(2)按类的访问级别:public,internal
(3)类是类成员:public,protected,internal,private
(4)静态类:static
等 -
类的访问级别修饰符:public,internal
public:决定在该类所在【项目】之外的其他项目中,能否看到该类
internal:把类的访问级别限制在【项目】级别中(默认)
代码示例
(1)右键 Solution,添加一个新项目,选择 Class Libiary ,可命名为MyLib
(2)在MyLib项目中,添加 new folder,编译器会自动把其视为一个名称空间,所以可命名为 Mynamespace
(3)在名称空间 Mynamespace中,添加 class,可命名为 Calculator
(4)为类Calculator写一个Add()方法,此时不为此类添加任何修饰符
(5)回到Program.cs(最开始创建的project),在右侧面板中选择 References——Add Reference——solution——MyLib
(6)为了省去写全限定名的麻烦,using MyLib.Mynamespace;
(7)可以看到,如果想在Program类中引用在MyLib.Mynamespace中声明的Calculator类,是做不到的,因为这个类的访问级别不是【public】
如果将Calculator类的访问级别改为public,就可以*引用了
说明:
(1)在默认情况下,也就是不为类写任何限制其访问级别的修饰符,类的访问级别是【internal】,也就是该类只能被其所在的项目中的其他成员访问,外界不能访问
(2)因为【HelloClass】(一开始创建的project)引用了【MyLib】,所以可以说:【HelloClass】依赖于【MyLib】
-
【Assembly】:译为装配集,装配件或程序集
一般情况下,每一个项目的编译结果,就是一个程序集
而常见的编译结果就两种:
(1).exe文件——可执行文件
(2).dll——类库
如果想要配置编译结果,在项目上右键,选择【properties】
总结:
(1)【public】是将一个类从程序集中暴露出去,使引用该程序集的程序集能够看到并访问该类
(2)【interenal】把类的访问限制在项目级别中,如果想让一个类只能被它所在的程序集中的其他成员所访问,就应该把这个类的访问级别设置为internal,且它是默认情况