第99页到110页

Frame类库定义了很多类型,各个语言的编译器会从中挑选一部分进行映射,映射的类型是编译器直接支持的,这些类型是primitive type,翻译为中文叫做基元类型。

所以primitive type其实是编译器级别的一种映射,主要还是为了少写代码和提高代码可读性。

dynamic也是基元类型,对应于object类型,那么我做出推断,dynamic特性是由编译器来提供支持的。

隐式转换不仅仅是派生类到基类的转换,也包含编译器提供的常规类型的隐式转换,比如从int32到int64的转换。

C#语言规范,听名字就很professional,应该是所有C#的事无巨细,都能查到标准的地方。

好玩的案例,

byte b = 10; b = b +200; 不能通过编译,第二句b = b+200需要现实转换,因为b+200是int。编译器本身不提供这种类型的隐式转换。

checked和unchecked是溢出检查的关键字,可以作用于编译level,语句块level,语句level。

值类型都是继承自valuetype类型的,仅仅可能是这个类的子类,这就难怪为什么值类型没有type pointer也能在栈里面work了。所有的值类型都是seal的。

作者提到一个有趣的点,将托管代码和native代码进行对比,一个对象是在栈上还是堆上,native代码是由如何声明决定的,而托管代码是写在基因里的。托管代码如何判断基因,是编译器做的事情,它会判断在栈上还是堆上放置object,然后交由CLR来执行。

CLR开放了对象(包括引用对象和值对象)的内存排列借口,在C#中可以为他们赋予property来定义排列类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值