摘要: 说明 整理了下近几年看过(有些买来就吸灰尘去了)的一些书籍,大致给分分类别归属,有些呢写了一些读后总结,有些未写,以后补上吧。同时也把一些我认为还可以的书推荐给大家, 红色表示力荐(十分制我觉得大于9分的),绿色表示推荐(8-9分)。 书籍导航 其他 浪潮之巅编码:隐匿在计算机软硬件背后的语言淘宝技 阅读全文
posted @ 2013-08-01 22:21 Timetombs 阅读(2569) 评论(15) 推荐(9) 编辑
摘要: 源码 1 [StructLayout(LayoutKind.Explicit)] 2 public struct IP 3 { 4 public IP(UInt32 value) 5 { 6 this._text1 = 0; 7 this._text2... 阅读全文
posted @ 2013-03-11 14:23 Timetombs 阅读(2111) 评论(6) 推荐(4) 编辑
摘要: MSBuild基本概念(续) 在上一篇简单的介绍了下MSBuild中的四个基本块,每块介绍比较单薄,在这里对在大多数的项目模版生成的*.*proj文件中比较常见一些用法和概念做些补充。主要有一下几方面: MSBuild特殊字符:MSBuild保留的一些字符,以及XML中的特殊字符处理。 MSBuil 阅读全文
posted @ 2012-09-01 10:48 Timetombs 阅读(15737) 评论(3) 推荐(9) 编辑
摘要: MSBuild是什么? MSBuild全称(Microsoft Build Engine),是用于构建应用程序的平台。您可能不知道它,但是如果您在使用VS做开发,那么一定时时刻刻在使用它。因为是它在背后为你管理生成你的项目文件。当新建一个项目时,注意下项目文件夹中的*.*proj文件就是为MSBui 阅读全文
posted @ 2012-08-30 07:43 Timetombs 阅读(49535) 评论(10) 推荐(20) 编辑
摘要: 适用场合描述做web开发时使用JSON作为数据传输格式时,如果服务器端传回的JSON数据对象层次嵌套过深。比如下面这段:服务器端返回的数据1 var data = {2 a: {3 b: {4 c: [123, 456, { 5 d: [789, "想要的数据"]6 }]7 }8 }9 };我如果想取出最内部d的第二个元素,通常会这么些写:data.a.b.c[2].d[1];面对这么多"."心里总是胆战心惊怦怦直跳的说。如果碰巧c里面没有第二个元素,那等着吧,浏览器... 阅读全文
posted @ 2012-08-11 03:28 Timetombs 阅读(1789) 评论(8) 推荐(0) 编辑
摘要: System.Net.NetworkInformation空间提供对网络流量数据、网络地址信息和本地计算机的地址更改通知的访问。该命名空间还包含实现 Ping 实用工具的类。可以使用Ping和相关的类检查是否可通过网络连接到计算机。在查MSDN时无意间翻到这了,发现挺好玩的,MSDN还给了具体例子,... 阅读全文
posted @ 2011-04-24 14:39 Timetombs 阅读(3714) 评论(1) 推荐(0) 编辑
摘要: 1.特性简介 特性仅仅是为目标元素提供关联的附加信息的一种方式,编译器的工作只是将这些附加信息放到托管模块的元数据中, 大多特性对于编译器来说没有任何特殊的意义,编译器只是检测源代码中的定制特性,然后产生相应的元数据。 FCL中已经带来了很多的预定义特性[System.ParamArrayAttri 阅读全文
posted @ 2011-04-09 18:34 Timetombs 阅读(1350) 评论(0) 推荐(0) 编辑
摘要: 1.枚举数 枚举数是循环访问其关联集合的对象。它可被视作指向集合中任何元素的可移动的指针。 一个枚举数只能与一个集合关联,但一个集合可以具有多个枚举数。C#的foreach 语句使用枚举数并隐藏操作该枚举数的复杂性。枚举数可用于读取集合中的数据,但不能用于修改基础集合。 集合要支持foreach则需 阅读全文
posted @ 2011-04-08 23:28 Timetombs 阅读(844) 评论(0) 推荐(0) 编辑
摘要: 1. 可空类型 值类型是不可以为null的[即不可为空值], 假如我们想让它为null呢[比如它对映这数据库中的某个表的某个字段,但是这个字段是null]。 自己实现的话,简单的写一个类,有一个值类型的字段,检查该字段是否初始化,是的话返回该值,否的话返回null。 假如是在C#1.0时,那么每个值 阅读全文
posted @ 2011-04-06 19:23 Timetombs 阅读(1064) 评论(0) 推荐(0) 编辑
摘要: 1. 局部类型 C#1.0中,一个类只可以放在一个文件中。C#2.0中用了一个关键字"partial", 可以把一个类分成两个部分[即一个类的实现可以在多个文件中]。 编译结果和写在一个文件中完全相同,更多的意义在于工程化的管理。 局部类型值适用与接口、类或者结构中,不支持枚举[一般也没这么大的枚举 阅读全文
posted @ 2011-04-06 11:01 Timetombs 阅读(1587) 评论(0) 推荐(0) 编辑
摘要: 1.匿名方法应用和机制 先看一段代码(C#1.0): 到了C#2.0时就可以省略掉起到为多委托声明的书写,直接内联方式写MyMethod方法: 难道真的省去了中间的方法了吗?看看IL代码: 发现多了一个《'<function>b__0'》的静态方法,如下是此方法代码: 在delegate关键字后面可 阅读全文
posted @ 2011-04-06 07:23 Timetombs 阅读(861) 评论(0) 推荐(0) 编辑
摘要: 1. 泛型概述 泛型是一种类型的多态;比如当我们写一个栈或者队列的时候,需要指定其数据类型,int一份代码,string一份代码,object的一份代码, 这些代码除了数据类型不同之外其他大部分都是相同的,根据设计模式的思想,抽象出来变化点封装它, 共同的部分作为共用的代码。这里的变化点就是类型了, 阅读全文
posted @ 2011-04-05 18:16 Timetombs 阅读(779) 评论(0) 推荐(0) 编辑
摘要: 接口与继承 CLR规定一个类型只能有一个基类型,这种继承成为单继承; 接口继承是指一个类型继承的是接口中的方法签名,而非方法实现,通常称为实现接口; 接口仅仅是含有一组虚方法的抽象类型,不含有任何实现。CLR允许接口包含静态方法、静态字段、常量、以及静态构造器, 但是CLS兼容的接口类型是不允许有任 阅读全文
posted @ 2011-04-05 12:38 Timetombs 阅读(758) 评论(0) 推荐(0) 编辑
摘要: 事件概述 CLR的事件模型建立在委托的机制之上。定义事件成员的类型允许类型(或者类型的实例)在某些特定事件发生时通知其他对象,事件为类型提供了一下三种能力: 1允许对象登记该事件 2允许对象注销该事件 3允许定义事件的对象维持一个登记对象的集合,并在某些特定的事件反生时通知这些对象 下面是根据一个上 阅读全文
posted @ 2011-04-03 20:48 Timetombs 阅读(891) 评论(0) 推荐(1) 编辑
摘要: 委托揭秘 编译器和CLR在后台做了很多工作来隐藏委托本身的复杂性,如下一句委托声明: 看看IL: 可以看出它默认继承自System.MulticastDelegate[所有委托都继承此类,MulticastDelegate又继承自System.Delegate],我们声明的public,所以编译器产 阅读全文
posted @ 2011-04-01 20:31 Timetombs 阅读(1390) 评论(0) 推荐(1) 编辑
摘要: 1.数组概述 声明数组: CLS要求所有数组都是0基数组。最小索引是0,性能最好的数组,微软为它们优化性能方面做了很多工作。 例如有些特殊的IL指令:newarr、ldelem等等,但是CLS也支持非0基数组。 CLR支持交错数组,但是交错数组不兼容CLS[CLS不允许一个数组的元素是System. 阅读全文
posted @ 2011-03-31 13:25 Timetombs 阅读(798) 评论(0) 推荐(0) 编辑
摘要: 1.Enum 枚举是定义了一组符号名称和数值对,如下: 枚举类型使程序更见容易阅读、编写和维护。每个枚举类型默认继承自 System.Enum,属于值类型,但是枚举不能定义任何方法、属性[本质 也是方法嘛]和事件。实际上枚举被编译时会把其中的每个符号转变为类型的一个常量字段,也就是0,1,2...会 阅读全文
posted @ 2011-03-30 18:45 Timetombs 阅读(726) 评论(0) 推荐(0) 编辑
摘要: 1.实例构造器[.ctor] 默认情况下,对于引用类型,如果我们没有显示的定义实例构造器,则C#编译器会为我们定义一个无参的公有实例构造器。 一个类的实例构造器在访问基类的继承字段之前,必须调用基类的实例构造器,C#编译器会自动产生对基类默认构造器的调用代码。 特殊情况下类型实例的创建不会调用实例构 阅读全文
posted @ 2011-03-29 18:10 Timetombs 阅读(810) 评论(0) 推荐(0) 编辑
摘要: 1.无参属性 当定义一个属性时,编译器会在生成的托管模块中产生一下3项: 1:get访问器方法,定义get时才有; 2:set访问器方法,定义set时才有; 3:关于属性的元数据,这项总是存在; 这写元数据信息中包括一些标记和属性类型,并有一个对get和set访问器方法的引用,仅仅为属性和它的访问器 阅读全文
posted @ 2011-03-29 13:28 Timetombs 阅读(677) 评论(0) 推荐(0) 编辑
摘要: 1.对象的等值性和唯一性 Object的Equals[虚]方法判断两个对象是否相等; Object.ReferenceEquals判断两个对象是否指向同一引用[严格意义上的相等、对象的唯一性]。 2.对象的散列码 Object的GetHashCode[虚]方法返回一个Int32类型的散列码,当重写E 阅读全文
posted @ 2011-03-29 13:06 Timetombs 阅读(758) 评论(0) 推荐(0) 编辑
摘要: 1.基元类型 编译器直接支持的数据类型成为基元类型。基元类型与FCL中的类型有直接的映射关系[int=Int32],这样我们可以简化的方式书写代码,并且编译后的IL和直接使用FCL中的数据类型是完全相同的。 Checked和Unchecked操作: CLR只在32位和64位上进行算数运算,所以b首先 阅读全文
posted @ 2011-03-29 12:33 Timetombs 阅读(724) 评论(0) 推荐(0) 编辑
摘要: 1.System.Object CLR要求每个类型都要继承自System.Object[直接或者间接方式],如果不显示继承,编译器会自动为我们添加对System.Object的继承。 System.Object提供几个公有实例方法: Equals:如果两个对象具有相同的值,返回true; GetHa 阅读全文
posted @ 2011-03-29 11:38 Timetombs 阅读(1002) 评论(0) 推荐(0) 编辑
摘要: 1.DEMO 使用匿名类型: 这个会输出什么呢?是someType的类型完全限定名吗?非也...看图: 我们都知道Console.WriteLine会去调用参数的ToString方法,那么可以肯定匿名类型someType重写了ToString方法。那么如果我再上面的基础上再加上一个匿名类型,只不过把 阅读全文
posted @ 2011-03-27 19:01 Timetombs 阅读(627) 评论(0) 推荐(0) 编辑
摘要: 1.对象初始化器 首先声明一个类Person: 初始化它并调用它: 这是编译器的一个小技巧:IL代码显示它和一般的初始化操作效果完全相同。{}里面出现的必须是共有的成员,字段或者属性。 可以支持对象初始化器的类型要满足一个条件是要有一个公有的无参的构造函数。 2.集合初始化器 这个有必要看看IL代码 阅读全文
posted @ 2011-03-27 16:28 Timetombs 阅读(1822) 评论(0) 推荐(1) 编辑
摘要: 1.DEMO var关键字,用来声明并初始化局部变量。编译器根据=右边的语句推断出变量实际的类型。 所以使用var的要求就是右边的语句必须可以让编译器推断出实际的类型。所以=号右边是必须要有值的,即是必须要初始化,不能只是声明。 但是有些不便于阅读代码了。于此同时,C#3.0的出现另一个新特性[匿名 阅读全文
posted @ 2011-03-27 15:16 Timetombs 阅读(770) 评论(0) 推荐(0) 编辑