随笔分类 -  《CLR Via C#》笔记

第3版
摘要:派生关系:System.Object => System.Array => 数组数组是引用类型,是在托管堆上进行分配的。Int32[] myIntegers; //声明了一个数组引用,初始设置为nullmyIntegers = new Int32[100]; //创建了含有100个... 阅读全文
posted @ 2014-07-31 13:42 IT浪潮之巅 阅读(228) 评论(0) 推荐(0)
摘要:15.1 枚举类型枚举类型定义了一组“符号名称/值”配对。例如,以下Color类型定义了一组符合,每个符号表示一种颜色。internal enum Color{ White, //赋值0 Red, //赋值1 Green, //赋值2 Blue, //赋值3 Or... 阅读全文
posted @ 2014-06-20 16:29 IT浪潮之巅 阅读(188) 评论(0) 推荐(0)
摘要:14.1 字符在.Net Framework中,字符总是表示成16位Unicode代码值。每个字符都表示成System.Char结构(值类型)的一个实例。3种实现数字类型与Char实例互相转换:1.强转 效率最高2.使用Convert类型 3.使用IConvertible接口14.2 System.... 阅读全文
posted @ 2014-06-10 16:16 IT浪潮之巅 阅读(182) 评论(0) 推荐(0)
摘要:第二部分 设计类型:第13章 接口 阅读全文
posted @ 2014-06-10 16:15 IT浪潮之巅 阅读(144) 评论(0) 推荐(0)
摘要:泛型的好处:1.代码重用。2.算法重用。泛型参数要么称为T,要不以T开头(如TKey和TValue)。大写T代表类型Type。代码演示:private static void SomeMethod(){ //构造一个List来操作DateTime对象 List dtList = new Li... 阅读全文
posted @ 2014-06-10 15:08 IT浪潮之巅 阅读(158) 评论(0) 推荐(0)
摘要:事件是实现交互的类型成员。定义事件需要提供以下能力:1.方法可登记/注销它对该事件的关注。2.改事件发生时,登记了的方法会收到通知。类型之所以能提供事件通知功能,是因为类型维护了一个已登记方法的列表。事件发生后,类型将通知列表中所有已登记的方法。为了理解事件在CLR中的工作机制,举个实用的场景:假定... 阅读全文
posted @ 2014-06-04 17:34 IT浪潮之巅 阅读(149) 评论(0) 推荐(0)
摘要:属性:无参属性 + 有参属性(索引器)10.1 无参属性强烈建议所有字段都设为private。通过属性的方式来封装字段,可对数据进行非法值判断。封装了字段访问的方法称为访问器(accessor)方法。可将属性理解为智能字段,背后有额外逻辑的字段。属性通过get和set方法可以设置读写。私有字段通常称... 阅读全文
posted @ 2014-05-13 16:50 IT浪潮之巅 阅读(301) 评论(0) 推荐(0)
摘要:9.1 可选参数和命名参数方法的参数可以设计为部分或全部分配默认值。还可以通过指定参数名称的方式为其传递实参。以下代码演示了可选参数和命名参数的用法:9.2 隐式类型的局部变量9.3 以传引用的方式向方法传递参数值类型的传给方法的是实例的一个副本,调用者中的实例不受影响。所以out和ref对引用类型... 阅读全文
posted @ 2014-05-13 15:30 IT浪潮之巅 阅读(169) 评论(0) 推荐(0)
摘要:8.1 实例构造器和类(引用类型)构造器是将类型实例初始化为良好状态的一种特殊方法。.ctor->constructor创建引用类型的实例过程:为实例的数据字段分配内存 => 初始化对象的附加字段(类型对象指针、同步块索引) => 调用类型的实例构造器来设置对象的初始状态实例构造器不能被继承,所以不... 阅读全文
posted @ 2014-04-02 14:15 IT浪潮之巅 阅读(117) 评论(0) 推荐(0)
摘要:7.1 常量定义常量符号时,它的值必须能在编译时确定,确定后编译器将常量的值保存到程序集的元数据中。定义常量只能是编译器认定的基元类型:Boolean、Char、Byte、SByte、Int16、Int32、UInt32、Int64、UInt64、Single、Double、Decimal、String。C#也允许定义一个非基元类型的常量变量(constant variable),前提是把它的值设置为null。常量被视为类型定义的一部分、被视为静态成员,将导致创建元数据。编译时常量的值被直接嵌入IL代码中,运行时不需要为常量分配任何内存。不能获取常量地址,不能以传引用的方式传递常量。所以,常量 阅读全文
posted @ 2014-04-02 10:22 IT浪潮之巅 阅读(99) 评论(0) 推荐(0)
摘要:6.1类型的各种成员在一个类型中,可以定义0个或多个以下种类成员:•实例构造器:将新对象的实例字段初始化的一种特殊方法。•常量:数据值恒定不变的符号,使代码更容易阅读和维护。常量通常与类型关联,不与类型的实例关联。逻辑上讲,常量是静态成员。•字段:表示可读或可读/可写的数据值。字段是静态时被认为是类型状态的一部分。字段是非静态时被认为是对象状态的一部分。强烈建议将字段声明为私有字段,防止类型或对象的状态被外部代码破坏。•属性:实质是方法,以一种简单的字段风格的语法来设置或查询类型或对象的部分逻辑状态,并保证状态不被破坏。作用于类型的称为静态属性,作用于对象的称为实例属性。属性可以没有参数(普遍 阅读全文
posted @ 2014-04-01 15:00 IT浪潮之巅 阅读(227) 评论(0) 推荐(0)
摘要:5.1编程语言的基元类型基元类型:编译器直接支持的数据类型。基元类型直接映射到Framework类库中存在的类型。如C#中,int->System.Int32简化过程:System.Int32 a = new System.Int32();int a = new int();System.Int32 a = 0;int a = 0;编译器自动在所有源代码文件中添加using指令:using int = System.Int32;...C#语言规范推荐使用关键字,而不是完整类型名称。作者认为应该使用完整类型名称,原因如下:1.写法的困惑。string与String2.语言的差异。C#中lo 阅读全文
posted @ 2014-02-21 17:17 IT浪潮之巅 阅读(183) 评论(0) 推荐(0)
摘要:4.1所有类型都从System.Object派生所有类型派生自System.Object,有一下公共实例方法:1.Equals:两个对象具有相同值返回true2.GetHashCode:返回对象值的哈希码。3.ToString:默认返回类型完整名称(this.GetType().FullName) 核心类型Boolean和Int32重写了该方法。为方便调试可以重写返回对象各个字段的值字符串。4.GetType:返回Type派生的一个对象的实例,指出调用GetType那个对象的类型。System.Object的GetType方法返回的是“类型对象指针”地址,可以判断出真实的类型。从System. 阅读全文
posted @ 2014-02-20 16:40 IT浪潮之巅 阅读(224) 评论(0) 推荐(0)
摘要:第一部分 CLR基础:第3章 共享程序集和强命名程序集 阅读全文
posted @ 2014-02-20 16:38 IT浪潮之巅 阅读(155) 评论(0) 推荐(0)
摘要:2.1.NET Framework部署目标Microsoft Windows多年来因不稳定和复杂而口碑不佳。造成的原因:1.应用程序都使用来自微软和厂商的动态链接库(dynamic-link library,DLL),可能互相会干扰破坏。2.安装的复杂性:应用程序安装需要将文件复制到目录、更新注册表、创建快捷方式。不能轻松将应用程序转移到另一天电脑,也无法保证卸载干净。3.安全性:程序可能后台操作一些用户不希望发生的动作,比如下载,执行危险操作等。附注:.NET Framew正尝试解决DLL hell的问题,但目前快捷方式的问题还不能解决。安全性上,.NET Framework包含一个名为“代 阅读全文
posted @ 2014-02-17 15:30 IT浪潮之巅 阅读(295) 评论(0) 推荐(0)
摘要:1.1将源代码编译成托管模块 每个面向CLR的编译器生成的都是IL(中间语言)代码,或称为托管代码,因为CLR管理它执行;另外编译器还要在每个托管模块中生成完整的元数据,元数据是一组数据表,一些数据表描述模块中定义的内容,比如类型及其成员。还有一些元数据表描述了托管模块引用的内容,比如导入的类型及其成员。元数据作用:1.编译后可以解析元数据,才有“智能感知”。2.将对象属性序列化和反序列化。注:CLR(Common Language Runtime)公共语言运行时 核心功能:内存管理、程序集加载、安全性、异常处理、线程同步1.2将托管模块合并成程序集清单是有一个或多个元数据表构成的集合,描述构 阅读全文
posted @ 2013-12-17 13:46 IT浪潮之巅 阅读(231) 评论(0) 推荐(0)

   友情链接: 淘宝优惠券