.NET Framework 平台构造基础
- CLR 公共语言运行库
执行给定编译代码单元所需的外部服务集合,它提供了一个定义明确的运行库层,可以被支持.NET的所有语言和平台所共享。
- 库
- mscoree.dll:公共对象运行库执行引擎
当用户程序引用一个程序集时,这个库将首先自动加载,然后由它负责将需要的程序集导入内存。
- 工作流程
- CTS 公共类型系统
CTS是一个正式的规范,它规定了类型必须如何定义才能被CLR承载。
- 类类型
这是OOP的基础,由成员和数据组成
- 特征
- 是否密封
- 是否实现接口
- 是具体的还是抽象的
- 可见性
- 语法
class Calc{……} |
- 接口类型
由抽象成员定义所组成的一个具名集合,通过特定的类或结构来实现。
- 语法
public interface IDraw{void Draw()} |
- 结构类型
可以看做是具有语义的轻量级类类型,适用于建模几何和数学数据
- 语法
struct Point{……} |
- 枚举类型
是一种便利的编程结构,用来组成名称/值对。
- 语法
enum CharacterType {Wizard = 100,Thief = 200} |
- 委托类型
等效于类型安全的C风格的函数指针。派生自System.MulticastDelegate类,而不是简单的指向原始内存地址的指针,为.NET事件架构提供了基础。
- 语法
delegate int BinaryOp(int x,int y); |
- 类型成员
类型成员是集合
- 组成
- 构造函数
- 终结器
- 静态构造函数
- 嵌套类型
- 操作符
- 方法
- 属性
- 索引器
- 字段
- 只读字段
- 常量
- 事件
- 可见性
- 公共的
- 私有的
- 受保护的
- 内建数据类型
CTS数据类型 | C#关键字 | CLI关键字 | 备注 |
System.Byte
|
byte | unsigned char | |
System.SByte
|
sbyte | signed char | |
System.Int16
|
short | short | |
System.Int32
|
int | int or long | |
System.Int64
|
long | _int64 | |
System.UInt16
|
ushort |
unsigned short
|
|
System.UInt32
|
uint |
unsigned int or unsigned long
|
|
System.UInt64
|
ulong |
unsigned _int64
|
|
System.Single
|
float | Float | |
System.Double
|
double | Double | |
System.Object
|
object | object^ | |
System.Char
|
char | wchar_t | |
System.String
|
string | String^ | |
System.Decimal
|
decimal | Decimal | |
System.Boolean
|
bool | Bool |
- CLS 公共语言规范
它清晰的描述了支持.NET的编译器必须支持的最小的和完全的特征集,可以被基于.NET平台的其他语言用统一的方式进行访问。
- 规则
- 规则1:CLS规则仅适用于类型中向定义它的程序集以外公开的部分。
- BCL 基础类库
.NET Framework 平台构造基础的更多相关文章
- C#语法糖演进-C#语言和.NET Framework平台介绍
p { font-size: 14px; text-indent: 2em } .title { text-indent: 0; font-size: 22px; font-weight: bold; ...
- PHP实现微信公众平台开发—基础篇
PHP实现微信公众平台开发—基础篇 2 1课程介绍 2 2. 微信公众号账号介绍的申请流程详解 2 2.1微信三角色关系 2 2.2信息流的过程 2 2.4微信公众账号的认证 3 2.5订阅号的申请流 ...
- 点菜网---Java开源生鲜电商平台-商品基础业务架构设计-商品分类(源码可下载)
点菜网---Java开源生鲜电商平台-商品基础业务架构设计-商品分类 (源码可下载) 说明:我们搞过电商的人都可以体会到,搞生鲜电商是最复杂的,为什么复杂呢?我总结了有以下几个业务特性决定的: 1. ...
- Java生鲜电商平台-商品基础业务架构设计-商品设计
Java生鲜电商平台-商品基础业务架构设计-商品设计 在生鲜电商的商品中心,在电子商务公司一般是后台管理商品的地方.在前端而言,是商家为了展示商品信息给用户的地方,它是承担了商品的数据,订单,营销活动 ...
- 【原创】C#搭建足球赛事资料库与预测平台(3) 基础数据表设计
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源C#彩票数据资料库系列文章总目录:http://www.cn ...
- 【云计算】Docker云平台—Docker基础
Docker云平台系列共三讲,此为第一讲:Docker基础 参考资料: Docker官方文档:https://docs.docker.com/ Docker从入门到实践:https://yeasy.g ...
- 中标麒麟龙芯平台--docker基础镜像制作
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 的出现为开发人员和运维人员带来了极大的便利.Docker在X86下常见的发行版Linux如Ub ...
- Entity Framework 动态构造Lambda表达式Expression<Func<T, bool>>
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...
- 朱晔的互联网架构实践心得S2E7:漫谈平台架构的工作(基础架构、基础服务、基础平台、基础中间件等等)
前言 程序开发毕竟还不是搬砖这种无脑体力劳动,需要事先有标准,有架构,有设计,绝对不是新公司今天创立,明天就可以开始编码的.其实很多公司在起步的时候没有财力和资源建设独立的基础架构或平台架构部门,甚至 ...
随机推荐
- Minimum setup for Apache+AD SSO
参照: http://www.grolmsnet.de/kerbtut/ https://docs.typo3.org/typo3cms/extensions/ig_ldap_sso_auth/2.1 ...
- Hashtable与Dictionary比较
项目需要存储Tcp连接对象,考虑使用Hashtable或者Dictionary存储.Hashtable在查询方面有优势,Dictionary在确定类型下不需要拆箱与装箱有优势.于是,写了个demo对两 ...
- angular-repeat
ng-repeat="name in 变量名字 track by $index" 一个数组的时候ng-repeat="name in 变量名字" {{x.nam ...
- html快速编写
1. 嵌套操作---------- 子操作: > div>ul>li <div> <ul> <li></li> </ul> ...
- 【SP26073】DIVCNT1 - Counting Divisors 题解
题目描述 定义 \(d(n)\) 为 \(n\) 的正因数的个数,比如 \(d(2) = 2, d(6) = 4\). 令 $ S_1(n) = \sum_{i=1}^n d(i) $ 给定 \(n\ ...
- Javascript高级编程学习笔记(62)—— 事件(6)焦点事件
焦点事件 焦点事件会在页面元素获得或者失去焦点时触发,利用焦点事件和 document.hasFocus() 方法配合使用 以及 document.activeElement 属性配合可以知晓用户在页 ...
- JavaPoet开源项目的使用
一.介绍 JavaPoet项目可以动态的生成Java文件,这是一个很强大和很动态的方法,使用注解的时候假如需要生成新的Java文件就可以通过这个开源项目实现. 项目地址:https://github. ...
- Docker学习笔记-Redis 安装
拉取官方的镜像 docker pull redis:3.2 查看 docker images redis 运行容器 docker run -p 6379:6379 -v $PWD/data:/data ...
- Core 读取配置文件
新建控制台 static void Main(string[] args) { Console.WriteLine("Hello World!"); //获取应用程序的当前工作目录 ...
- ubuntu双网卡配置,实现内网外网同时访问!
我们假定内网IP为:10.35.0.58,内网网关为:10.35.0.254:外网IP为222.76.250.4,外网网关为:222.76.250.1.其中局域名网需要连接:10.35.0.X,10. ...