摘要: 1.1实力构造器和类(引用类型)构造器:是允许将类型的实例初始化为良好状态的一种特殊方法。 在创建一个引用类型的实例时: 1.为实例的数据字段分配内存。 2.初始化对象的附加字段(类型对象指针和同步索引块)。 3.调用类型的实例构造器来设置对象的初始状态。 C#语法提供了一个简单的语法,允许在构造引用类型的一个实例时,对类型中定义的字段进行初始化(内联方式初始化)internal sealed class SomeType{private Int32 m_x=5;private String m_s="Hi Here";private Double m_d=3.141592 阅读全文
posted @ 2013-01-18 16:57 hailiang2013 阅读(192) 评论(0) 推荐(0)
摘要: 1.1 常量常量(constant)是一个特殊的符号,它有一个从不变化的值,定义常量符号时,它的值必须能在编译时确定,确定之后,编译器将常量的值保存到程序集的元数据中。这意味着只能为编译器认定的基元类型定义常量,也可以是非基元类型,但必须是null。所以代码在引用一个常量符号时,不需要为常量分配任何内存,编译器会在元数据中提取常量值,嵌入的IL代码中。除此之外,不能获取常量的地址,也不能按引用的方式传递常量。这些限制意味着,常量没有很好的跨程序集版本特性 ,如果希望在运行时从一个程序集中提取另一个程序集中的值,那么不应该使用常量,而应该使用readonly字段下面举个例子将以下代码编译一个dl 阅读全文
posted @ 2013-01-16 12:49 hailiang2013 阅读(170) 评论(0) 推荐(0)
摘要: 1.1类型的各种成员1.常量2.字段字段如果是静态的,这种情况会被认为是类型状态的一部分,在类型构造器(静态构造函数)初始化。字段也可以是实例(非静态),这种情况会被认为是对象状态的一部分,在实例构造器中初始化。3.实例构造器新对象的实例字段初始化4.类型构造器类型的静态字段初始化5.方法作用:更改或查询一个类型或对象的状态。当作用于类型时,成为静态方法当作用于对象时,称为实例方法6.操作符重载其实是一个方法,它定义了将一个特定的操作符作用于对象时,应该如何操作这个对象,但不是CLS的一部分。7.操作符转换定义了如何隐式或显示地将对象从一种类型转型为另一种类型的方法,也不是CLS的一部分8.属 阅读全文
posted @ 2013-01-15 16:31 hailiang2013 阅读(193) 评论(0) 推荐(0)
摘要: 1.1 编程语言的基元类型 下面给个C#基元类型与对应的FCL类型表格:C#基元类型FCL类型CLS相容说明sbyteSystem.SByte否有符号8位值byteSystem.Byte是无符号8位值shortSystem.Int16是有符号16位值ushortSystem.UInt16否无符号16位值intSystem.Int32是有符号32位值uintSystem.UInt32否无符号32位值longSystem.Int64是有符号64位值ulongSystem.UInt64否无符号64位值charSystem.Char是16位Unicode字符floatSystem.Single是IEE 阅读全文
posted @ 2013-01-14 16:41 hailiang2013 阅读(194) 评论(0) 推荐(0)
摘要: 4.1 所有类型都是从System.Object派生CLR要求所有对象都用new操作符来创建Employee e=new Employee("ConstructorParam1");new操作符所做的事情:1.计算类型以及所有基类中定义的实例字段所需要的字节数2.在托管堆中分配指定类型要求的字节数,分配对象的内存3.它初始化对象的“类型对象指针”和“同步块索引”成员4.调用类型的实例构造器,编译器会在构造器中自动生成代码来调用一个基类构造器,每个类型的构造器负责初始化有这个类型定义的实例字段,最终调用System.Object的构造器new 执行了所有这些操作之后,会返回指 阅读全文
posted @ 2013-01-11 13:43 hailiang2013 阅读(184) 评论(0) 推荐(0)
摘要: 1.1两种程序集,两种部署哪两种程序集?CLR支持两种程序集:弱命名程序集(weakly named assembly)和强命名程序集(strongly named assembly)两种程序集的共同点?结构上完全一致:相同的PE文件格式、PE32(+)头、CLR头、元数据、清单表以及IL。生成工具相同:C#编译器或者AL.exe两种程序集的区别?强命名程序集使用了发布者的公钥/私钥对进行了签名,它唯一标识了程序集的发布者,这对密钥允许对程序集进行唯一性的标识、保护和版本控制,允许程序集部署到用户机器的任何地方,甚至可以部署到Interne。上面介绍了两种程序集,下面在介绍两种部署一个程序集可 阅读全文
posted @ 2013-01-09 17:31 hailiang2013 阅读(250) 评论(0) 推荐(0)
摘要: .Net Framework部署目标现在Microsoft Windows中部署应用程序的问题:(目标就是解决这些问题)1、Dll hell更新旧的dll时,由于之前很多应用都引用了旧的dll,发布新dll前不可能对所有应用程序进行测试。就有可能你更新一个dll造成其他应用程序运行不了。2、安装应用程序很复杂:需要复制文件到各个目录,要更新注册表,要在桌面开始菜单快速启动栏安装快捷方式。而且复制一个程序到另一台机器不能直接使用,还要重新安装3、不安全:安装的应用程序的各种文件由不同公司编写。而且web应用程序会悄悄下载一些代码解决:类型不需要像COM那样注册注册表,解决DLL Hell,安全机 阅读全文
posted @ 2013-01-08 15:37 hailiang2013 阅读(222) 评论(0) 推荐(0)
摘要: 1.1将源代码编译成托管模块一、托管模块的各个组成部分1.PE32或PE32+头,标准的WindowsPE文件头,如果这个头使用的是PE32格式,文件只能在32或64位系统上运行,如果头是PE32+格式只能在64位系统上运行2.CLR头3.元数据,一组数据表,主要包含两种表:①描述源代码中定义的类型和成员②描述源代码引用的类型和成员。4.IL(中间语言)代码,编译器编译源代码时生成的代码,在运行时,CLR将IL编译成本地CPU指令。二、元数据多种用途1.编译时,元数据消除了对本地C/C++头和库文件的需求(在IL代码文件中,已经包含和引用的类型/成员有关的全部信息,编译器可以直接从托管模块读取 阅读全文
posted @ 2013-01-07 14:12 hailiang2013 阅读(258) 评论(0) 推荐(0)
摘要: 其实这篇文章是从网上转载的,但是找不到转载链接,只能自己复制过来了vs中的///文档注释类似java中/** */文档注释。能自动的生成帮助文档。如果我想在每次创建文件时,自动生成文档注释(注意是自动生成文档注释而不是帮助文档),如下面的代码,需要设置VS的模板,新创建的cs类文件会根据模板的样子进行生成。常用的VS文件模板有3个,分别是Class.zip、Interface.zip、From.zip.我以Class.zip模板设置为例,模板在vs2010下的路径C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\It 阅读全文
posted @ 2012-12-27 15:28 hailiang2013 阅读(236) 评论(0) 推荐(0)
摘要: IOC:英文全称:Inversion of Control,中文名称:控制反转,它还有个名字叫依赖注入(Dependency Injection)。作用:将各层的对象以松耦合的方式组织在一起,解耦,各层对象的调用完全面向接口。当系统重构的时候,代码的改写量将大大减少。理解依赖注入: 当一个类的实例需要另一个类的实例协助时,在传统的程序设计过程中,通常有调用者来创建被调用者的实例。然而采用依赖注入的方式,创建被调用者的工作不再由调用者来完成,因此叫控制反转,创建被调用者的实例的工作由IOC容器来完成,然后注入调用者,因此也称为依赖注入。举个有意思的例子(来源于互联网)假如我们要设计一个Girl. 阅读全文
posted @ 2012-12-27 14:27 hailiang2013 阅读(245) 评论(0) 推荐(0)