代码改变世界

CLR via C# 边读边想 07 - 常量和字段

2012-06-30 23:27 by richardzhaoxb, 114 阅读, 0 推荐, 收藏, 编辑
摘要:Constants如果定义了一个常量,那么在编译时,他的值必须确定下来。编译器是把常量的值存放在了 assembly 的 metadata 中。常量只能是原生类型:Boolean, Char, Byte, SByte, Int16, UInt16, Int32, UInt32, Int64,UInt64, Single, Double, Decimal, and String.由于常量从来不会变化,所以它们也被认为是类本身的(而不是实例对象的),换句话说,常量常被认为是静态成员,而不是实例成员。Fields下表列出了字段的修饰符:尽量使用 static readonly 的组合,而不要用 co 阅读全文

CLR via C# 边读边想 06 - 类型和成员基础

2012-06-30 22:56 by richardzhaoxb, 143 阅读, 0 推荐, 收藏, 编辑
摘要:The Different Kinds of Type Members一个类可以定义以下成员:Constants,常量:经常以类的静态成员存在,提高可维护性和可读性。Fields,字段:可以是实例字段也可以是类的静态字段。一般字段都是定义为私有的。Instance constructors,实例构造函数。Type constructors,类型构造函数。Methods,方法:用来读取和改写字段的操作。Operator overloads,操作符重写:定义了对象碰到特殊的操作符时的运算方法。因为不是所有的编程语言都支持操作符重写,所以不是Common Language Specification 阅读全文

CLR via C# 边读边想 05 - 原生类型,值类型,引用类型

2012-06-27 15:00 by richardzhaoxb, 432 阅读, 1 推荐, 收藏, 编辑
摘要:Programming Language Primitive Types有一些类型经常被用到,以至于编译器可以允许你更加方便的使用一些简便语法操作它们。比如Int类型,按照一般的要求,应该这样来创建:System.Int32 a = new System.Int32();但是许多编译器(包括 CSC.exe)允许我们简化为:int a = 0;这样写不但使得代码可读性更好,而且产生的 IL 和上一种写法产生的 IL 是一致的。所以下面的几种写法,编译后产生的 IL 是一致的:int a = 0; // Most convenient syntaxSystem.Int32 a = 0; // C 阅读全文

CLR via C# 边读边想 04 - 类型基础

2012-06-27 10:59 by richardzhaoxb, 131 阅读, 0 推荐, 收藏, 编辑
摘要:All Types Are Derived from System.Object运行时要求所有的类型最终都是从 System.Object 继承来的。System.Object 有定义以下的一个公共方法:Equals:判断两个对象的值是否相等。GetHashCode:根据对象的值计算一个哈希值,如果一个类型会被当做key存储在hash table的集合中,那你一定要重写这个方法。ToString:这个大家都知道,默认情况下是返回这个类的全名(this.GetType().FullName),像一些核心类型,比如Boolean,int,就重写了这个方法,输出相应的值,这个方法也经常被用来做调试使 阅读全文

CLR via C# 边读边想 03 - 本地程序集和强命名程序集

2012-06-25 20:38 by richardzhaoxb, 215 阅读, 0 推荐, 收藏, 编辑
摘要:Two Kinds of Assemblies, Two Kinds of DeploymentCLR 支持两种类型的程序集:weakly named assemblies and strongly namedassemblies。这两种类型的Assembly在文件内部结构上没有什么区别,都是按照前面两章介绍的由 PE32(+) header,CLR header,metadata,manifest table,还有 IL 组成。而且也是用同样的工具来生成程序集,例如 CSC.exe 和 AL.exe 。他们最大的区别就是强命名的程序集会由发布者的一对key来为其签名,而这对key可以唯一的标 阅读全文

CLR via C# 边读边想 02 - .NET 程序的编译、打包、部署和管理

2012-06-05 16:39 by richardzhaoxb, 327 阅读, 0 推荐, 收藏, 编辑
摘要:.NET Framework Deployment Goals一直以来,微软的的Windows和它上面的应用程序经常被诟病不稳定,以及太复杂。其中不稳定的一个主要的原因就是由于“DELL hell”,所谓的DLL Hell就是指以前的程序不方便安装,卸载和转移,因为他们都不是自解释的,需要用到注册表。 当有新的版本要更新旧版本又不能保留,但是又担心新版本不能很好的兼容旧的版本。而被大家普遍认为太复杂的一个主要原因是因为安装复杂,一般要安装一个程序,首先要往一系列不同的目录copy文件,然后更新注册表,最后还要在桌面或菜单创建快捷方式。这就导致这个应用不是一个单一的独立实体,所以你不能简单的通过 阅读全文

CLR via C# 边读边想 01 - .NET 程序是如何运行起来的?

2012-06-04 22:31 by richardzhaoxb, 356 阅读, 0 推荐, 收藏, 编辑
摘要:微软的.Net在2001年作为新事物出现,给我们带来了很多新的概念、技术和术语,在日常的开发中很少关注,要深入了解.NET就必须先了解这些术语的含义:CLR,common language runtime。是.Net支持的开发语言所共用的运行时。这个运行时提供了一些核心的功能:内存管理、程序集加载、安全性、错误处理、线程同步等。其实CLR并不知道拿进来运行的代码是用什么语言写的,因为它只接受编译好的Managed Module。Compiling Source Code into Managed ModulesManaged Module是一个标准的Windows可移植可执行(portable 阅读全文

CLR via C# 边读边想 00 - 序 & 索引

2012-06-03 22:07 by richardzhaoxb, 207 阅读, 0 推荐, 收藏, 编辑
摘要:今天在送女儿去上舞蹈课时,无聊到了极点,便拿起口袋中的Kindle翻看里面的书和文章,其中有一个是我半年前就copy进去的 CLR via C# 3rd Edition,但是一直没有看过,简单的翻看了第一章后发现原来自己做了这么多年的.Net,还有这么多细节没有关注过,有很多收获。 于是对这边书有了一种想通读全书的渴望。鉴于之前看电子书,都是快速的阅读,没有留下笔记,没有自己的整理和思考,所以看的快忘的也快。为了改变这种不好的习惯,特地开了博客,边读边在博客做笔记,边做笔记边思考,还有自己动手写程序实践。感受另外一种阅读体验。我这里选择的是第三版的英文原版,虽然市面上已经可以买到这一版的中文翻 阅读全文

博客,新的开始

2012-06-03 21:08 by richardzhaoxb, 103 阅读, 0 推荐, 收藏, 编辑
摘要:看cnblogs也有好几年了,看到人家日积月累,总归有些收获,而自己虽然也做了一些事情,看过一些书,但是却没有留下什么,甚至感觉少许的空虚。在2012年过了一半的日子,决定要改变自己的生活/工作方式,多一些思考,多一些总结,多一些反省,多一些参与到社区。就借用博客园作为工具和平台,先鞭策自己,如果写的好,也可以回馈大家。 给自己加油! 阅读全文