一、什么是“通用类型系统”(CTS)

描述类型的定义和行为

二、CTS规范

一个类型可以包含零个或者多个成员
1,成员
①字段(Field)
作为对象状态一部分的数据变量。字段根据名称和类型来区分
②方法(Method)
针对对象执行操作的函数,通常会改变对象的状态。方法有一个名称、一个签名以及一个或多个修饰符。签名指定参数数量(及其顺序);参数类型;方法是否有返回值;如果有返回值,还要指定返回值类型
③属性(Property)
对于调用者,属性看起来是字段。但对于类型的实现者,属性看起来像是一个方法(或两个方法)。属性允许在访问值之前校验输入参数和对象状态,以及/或者仅在必要时才计算某个值。属性还允许类型的用户采用简化的语法。最后,属性允许创建只读或只写的“字段”
④事件(Event)
事件在对象以及其他相关对象之间实现了通知机制。

2,类型的可见性规则以及类型成员的访问规则
①private
成员只能由同一个类(class)类型中的其他成员访问
②family
成员可由派生类型访问,不管那些类型是否在同一个程序集中(C#使用protected)
③family and assembly
成员可由派生类型访问,但这些派生类型必须在同一个程序集中(C#没有提供这种访问控制)
④assembly
成员可由同一个程序集中任何代码访问(C#使用internal)
⑤family or assem
成员可由任何程序集的派生类访问。成员也可以由同一个程序集的任何类型访问(C#使用protected internal)
⑥public
成员可由任何程序中的任何代码访问

3,一个类型只能从一个基类派生(单继承)

4,CTS还为类型继承、虚方法、对象生存期等定义了相应的规则

最新文章

  1. 23种设计模式--观察者模式-Observer Pattern
  2. HDOJ 1004 Let the Balloon Rise
  3. MySQL热备脚本
  4. hdu 1097 A hard puzzle
  5. 如果在代码中使用JS
  6. [工具][windows][visualStudio][充电]番茄助手vaassist常见用法
  7. 如何修改svn的密码或重新输入用户名密码
  8. 修改LiteIDE 编辑窗口的主题
  9. python2 dir(list)
  10. MongoDB主从配置
  11. POJ 1745 Divisibility (线性dp)
  12. 【CPP】概览
  13. Python基础之迭代器、生成器
  14. kibana查询语法 使用教程
  15. go语言学习--内核态和用户态(协程)
  16. XML解析技术-dom4j
  17. python小练习---TCP客户端
  18. Educational Codeforces Round 4 B. HDD is Outdated Technology
  19. Python学习笔记之装饰器原理
  20. LeetCode——Convert Sorted List to Binary Search Tree

热门文章

  1. Concat层解析
  2. Python练习-装饰器版-为什么我的用户总被锁定
  3. C# Json字符串反序列化
  4. 如何编写 Typescript 声明文件
  5. apache服务器yii2报The fileinfo PHP extension is not installed解决思路
  6. Python raw_input和input总结 在版本2和版本3中的区别
  7. 排序算法的java实现
  8. a标签、img图片、iframe、表单元素、div
  9. 大数据系列之数据仓库Hive中分区Partition如何使用
  10. 数论-求n以内的质数