01 2013 档案

摘要:自从开始系统学习CLR via C#以来,看到CLR的什么功能总想深入了解内部是如何实现的。研究枚举时也不例外。首先看一下枚举的庐山真面目:定义一个如下的枚举:public enum Colors:ushort{ Red, Blue, Green}注意:此处的:ushort并不是描述一个继承关系。它是用来描述该枚举所采用的基础类型为ushort. 让我们再来看一下编译器生成的代码:其实经过编译器处理之后,这个枚举变成了一个继承自System.Enum的类。我们定义的每一个枚举元素变成了这个类中的一个公有,静态的常量。而它们的类型则是之前通过:ushor... 阅读全文
posted @ 2013-01-18 17:23 self.refactoring 阅读(313) 评论(0) 推荐(0)
摘要:字符串这个东西我想所有人从接触程序开始应该就开始了解。但是在CLR中,仍然有一些东西我了解得并不清楚。 字符串的留用 我们经常在代码中定义一些常量字符串,有时候在多个地方定义的常量字符串是一样的。或者在我们的程序中定义了很多的string对象,这些对象里保存的字符串值都是一样的。 在CLR中String对象是不可变的,那么如果内存中有大量的值相同的String对象,是对内存的一种浪费。 其... 阅读全文
posted @ 2013-01-18 11:00 self.refactoring 阅读(559) 评论(0) 推荐(0)
摘要:接口就是将一些相关联的动作集合在一起形成一个契约,然后让类可以去实现这些契约。接口中定义的都是动作(方法相关:比如属性,方法,事件)的签名,没有实现接口中定义的成员都是Public的(因为是对外公布的契约)接口的名字一般用I开头,以标识其为接口 而对于实现了特定接口的类必须实现接口中定义的所有动作 内存模型看一下当类实现了一个接口时,CLR内部的内存布局是怎么样的。以如下实例为例:在运行时,CLR中会生成如下数据结构:调用模型这样子的话如果我作如下调用:MessageHandler messageHandler = new MessageHandler();messageHandler.Di. 阅读全文
posted @ 2013-01-11 16:29 self.refactoring 阅读(243) 评论(0) 推荐(0)