随笔分类 - 读书笔记
摘要:
查询语法(query syntax)可以让程序逻辑的表达由“命令式”转换为“声明式”。查询语法定义了想要的结果,而把具体实现交给其他的专门实现。使用查询语法(实现了查询表达式模式的方法语法也可以)要比传统的命令式循环结果更加清晰的表达你的意图...
阅读全文
![](http://images.cnblogs.com/cnblogs_com/IPrograming/353645/o_CSharp.png)
摘要:
C#允许我们创建两种类型:值类型和引用类型。如果两个引用类型的变量指向的是同一个对象,它们将被认为是“引用相等”。如果两个值类型的变量类型相同且包含同样的内容,它们被认为是“值相等”。这也正是同等性判断需要如此多方法的原因...
阅读全文
![](http://images.cnblogs.com/cnblogs_com/IPrograming/353645/o_CSharp.png)
摘要:
ToString()方法作为.NET环境中最常用的方法之一,我们应该为类型的所有者提供一个合理的ToString()版本,类型的字符串表示可用来在不同的环境下向用户轻松显示对象的相关信息;此外,类型的字符串表示还可以拥有调试环境。因此,我们创建的每一个类型都应该能覆写...
阅读全文
![](http://images.cnblogs.com/cnblogs_com/IPrograming/353645/o_CSharp.png)
摘要:
#if/#endif 语句常用来基于同一份源码生成不同的编译结果,其中最常见的就是debug版和release版。但是这些工具在实际应用中并不是非常友好,因为它们容易被滥用,其代码页进而难以理解或调试。C#设计中考虑到这个问题,并提供了更好的工具——Conditional特性...
阅读全文
![](http://images.cnblogs.com/cnblogs_com/IPrograming/353645/o_CSharp.png)
摘要:
因为相对于强制类型转换来说,as更安全,也更加高效。as和is操作符都不会执行任何用户自定义的转换,它们仅当运行时类型符合目标类型时才能转换成功,也不会在转换时创建新的对象...
阅读全文
![](http://images.cnblogs.com/cnblogs_com/IPrograming/353645/o_CSharp.png)
摘要:
C#语言中有两种类型的常量:编译期常量和运行时常量。应该尽量使用运行时常量,而不是编译期常量。虽然编译期常量略快一些,但是没有运行时常量那么灵活。应仅仅在那些性能异常敏感,且常量的值在各个版本之间绝对不会变化时,才使用编译器常量...
阅读全文
![](http://images.cnblogs.com/cnblogs_com/IPrograming/353645/o_CSharp.png)
摘要:
属性允许将数据成员作为公共接口的一部分暴露出去,同时仍旧提供面向对象环境下所需要的封装。属性这个语言元素可以让你像访问数据成员一样使用,但底层依旧使用方法实现。通过使用属性我们可以创建出类似于数据访问(客户代码在访问属性时,就像是在访问共有的字段),但实际上确是方法调用的接口...
阅读全文
![](http://images.cnblogs.com/cnblogs_com/IPrograming/353645/o_CSharp.png)
摘要:1.任何不会被修改的变量都可以作为参数传入新的函数,至于会被修改的变量就需要格外小心。(p9)2.重构技术就是以微小的步伐修改程序。如果你犯下错误,很容易便可以发现它。(p13)3.好的代码应该清楚的表达出自己的功能,变量名称是代码清晰的关键。(p15)4.绝大多数情况下,函数应该放在它使用的数据所属的对象内。(p17)5.有时候我会保留旧函数,让它调用新函数。如果旧函数式一个public函数,而我又不想修改其他类接口,这便是一种有用的手法。(p20)6.最好不要再另一个对象的属性基础上运用switch语句。如果不得不使用,也应该在对象自己的数据上使用,而不是在别人的数据上使用。(p34)7.
阅读全文