Effective C# 改善C#程序的50种方法
介紹
1.
第一章 C# 语言习惯
1.1.
原则1:使用 属性(Poperty)代替可直接访问的数据成员(Data Member)
1.2.
原则2:偏爱 readonly 而不是 const
1.3.
原则3:选择 is 或 as 而不是强制类型转换
1.4.
原则4:使用条件特性(conditional attribute)代替 #if
1.5.
原则5:总是提供 ToString()
1.6.
原则6:理解几个不同相等概念的关系
1.7.
原则7:明白 GetHashCode() 的陷阱
1.8.
原则8:优先考虑查询语法(query syntax)而不是循环结构
1.9.
原则9:在你的 API 中避免转换操作
1.10.
原则10:使用默认参数减少函数的重载
1.11.
原则11:理解小函数的魅力
2.
第二章 .NET 资源管理
2.1.
原则12:选择变量初始化语法(initializer)而不是赋值语句
2.2.
原则13:使用恰当的方式对静态成员进行初始化
2.3.
原则14:减少重复的初始化逻辑
2.4.
原则15:使用 using 和 try/finally 清理资源
2.5.
原则16:避免创建不需要的对象
2.6.
原则17:实现标准的 Dispose 模式
2.7.
原则17:实现标准的 Dispose 模式
2.8.
原则18:值类型和引用类型的区别
2.9.
原则19:确保0是值类型的一个有效状态
2.10.
原则20:更倾向于使用不可变原子值类型
3.
第三章 用 C# 表达设计
3.1.
原则21:限制你的类型的可见性
3.2.
原则22:选择定义并实现接口,而不是基类
3.3.
原则23:理解接口方法和虚函数的区别
3.4.
原则24:使用委托来表达回调
3.5.
原则25:实现通知的事件模式
3.6.
原则26:避免返回类的内部对象的引用
3.7.
原则27:总是使你的类型可序列化
3.8.
原则28:创建大粒度的网络服务 APIs
3.9.
原则29:让接口支持协变和逆变
4.
第四章 和框架一起工作
4.1.
原则30:选择重载而不是事件处理器
4.2.
原则31:用 IComparable<T> 和 IComparer<T> 实现排序关系
4.3.
原则32:避免 ICloneable
4.4.
原则33:只有基类更新处理才使用 new 修饰符
4.5.
原则34:避免定义在基类的方法的重写
4.6.
原则35:理解 PLINQ 并行算法的实现
4.7.
原则36:理解 I/O 受限制(Bound)操作 PLINQ 的使用
4.8.
原则37:构造并行算法的异常考量
5.
第五章 杂项讨论
5.1.
原则38:理解动态(Dynamic)的利与弊
5.2.
原则39:使用动态对泛型类型参数的运行时类型的利用
5.3.
原则40:使用动态接收匿名类型参数
Powered by
GitBook
Effective C# 改善C#程序的50种方法
第五章 杂项讨论