[C#2] 3-局部类型、属性访问器保护级别、命名空间别名限定符
1. 局部类型
C#1.0中,一个类只可以放在一个文件中。C#2.0中用了一个关键字"partial", 可以把一个类分成两个部分[即一个类的实现可以在多个文件中]。 编译结果和写在一个文件中完全相同,更多的意义在于工程化的管理。
局部类型值适用与接口、类或者结构中,不支持枚举[一般也没这么大的枚举吧];
同一个类型的各个部分必须都有修饰符partial,必须位于相同的命名空间中,必须同时编译、访问修饰符必须维持一致性;
关键字partial 是一个上下文关键字,只有和class、struct、interface放在一起时才有关键字的含义;
局部类型上的特性和接口具有累加效应;
如果一个类型有一个部分使用了abstract修饰符,那么整个类将被视为抽象类;
如果一个类型有一个部分使用了sealed修饰符,那么整个类将被视为密封类;
各部分不能使用相互矛盾的修饰符,比如不能在一个部分上使用abstract,又在另一个部分上使用sealed;
各部分上指定的基类必须一致。某些部分可以不指定基类,但如果指定,则必须相同。
2. 属性访问器保护级别
C# 2.0允许对一个属性的get和set访问器使用不同的访问级别修饰符[注意属性访问器和属性的概念]。
属性访问器(get或set)上的访问修饰符必须比属性的访问修饰符更严格;
只能在一个属性访问器(get或set)上指定 访问修饰符,另一个默认使用属性的访问修饰符;
对于接口中的属性只能默认为public,不能设置属性访问器(get或set)的访问修饰符。
3. 命名空间别名限定符
C#2.0允许使用命名空间别名限定符(::)来避免不同命名空间中类型名称冲突的问题。 当使用命名空间别名限定符(::)时编译器可以确保这是一个只适用于"命名空间别名"的限定符[查看IL代码中使用的就是::], 不会辨析为其他类型、或者成员限定符(.)。关键字global可以放在命名空间别名限定符(::)的左边, 它使得编译器只去搜索那些所有的命名空间,而不会去搜索其他的类型、或者成员。尽可能地使用命名空间别名限定符(::), 而减少使用点号(.)这样的通用限定符[加快编译器搜索类型,编译后无任何区别]。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Django开发快速入门
- 三阴性乳腺癌表达数据分析笔记之PAM50
- Celery入门
- TO-do api
- 炫酷,Spring Boot + ECharts 实现用户访问地图可视化(附源码)
- 互联网大厂常考算法及套路深度解析
- 2020--Python语法常考知识点
- 为什么你画的Seurat包PCA图与别人的方向不一致?
- 用Python程序模拟300位观众,为5位嘉宾随机投票,最后按照降序排列结果
- Python知识点
- 上盘硬菜,@Transaction源码深度解析 | Spring系列第48篇
- Python--网络编程和并发
- HashMap常见问题(更新中)
- 使用SNVSniffer软件找somatic mutation
- 腾讯云cvm 内存使用率监控指标解读