Effective C# 第3版学习地图:5章50条
按Addison-Wesley第3版权威目录组织5章50条,建立语言、资源、泛型、LINQ和异常的学习路径、横向contract链与验收门禁。
学习目标
- 能描述第3版5个原章与50条Item的范围,判断任一实践问题应进入哪个章节审计
- 能绘制type、lifetime、execution和failure四条跨章contract chain,解释章节间依赖
- 能设计目录、决策、视觉、实践和版本边界五道学习门禁,复现每章通过证据
为什么先核对第3版目录再学习
本课程对应Bill Wagner的Effective C#, Third Edition,面向C# 6.0,ISBN 978-0-13-457944-3。出版社目录是5章50条:Chapter 1 Items 1-10、Chapter 2 Items 11-17、Chapter 3 Items 18-28、Chapter 4 Items 29-44、Chapter 5 Items 45-50。原书没有“并行与异步”章节,也没有“属性优先”作为Item 1;那属于其他版本或姊妹书主题。
第一次学习按原章顺序建立完整索引;第二次复习再根据当前项目的最高风险,从四条横向contract chain进入并回链到对应Item。这样既不漏目录,也不把阅读顺序误当固定的问题排查顺序。
先预测:按十个热门主题抽样能否代表50条完整建议;把现代C#语法直接替换进2017原文是否仍叫忠实覆盖;看完示意图但未运行failure case是否算掌握?三个答案都是否。
↡以出版社第3版目录中的5章、50个Item title、版本和ISBN作为课程覆盖的唯一结构基准。五章纵向路线:从Source Choice到Failure State
Chapter 1: C# Language Idioms (Items 1-10)
先练source-level decisions:type inference何时增强可读性,readonly如何跨version,pattern/cast怎样表达failure,文本如何保留culture,delegate/event如何定义调用权,boxing与new hiding如何影响runtime。
Chapter 2: .NET Resource Management (Items 11-17)
再建立lifecycle:GC与resource release分工,member/static/constructor初始化收敛到一处,allocation需要profile,constructor禁止virtual dispatch,Dispose按ownership和SafeHandle边界实现。
Chapter 3: Working with Generics (Items 18-28)
把能力搬到type system:minimal constraints、measured specialization、ordering laws、disposable T、variance、delegate method capability、generic API shape、classic compatibility与extension contract。
Chapter 4: Working with LINQ (Items 29-44)
分开query construction与execution:iterator、composition、function parameter、extension resolution、query mapping、lazy/eager、lambda fault、capture、provider、cardinality与bound variable都在enumeration boundary验收。
Chapter 5: Exception Practices (Items 45-50)
最后定义失败后的系统:method contract failure、using/finally、custom exception、strong guarantee、exception filter与filter observation共同保证可清理、可诊断、可恢复。
切换5个官方章节与Item范围
Language -> Resource -> Generic -> LINQ -> Exception
syntax lifetime type execution failure
choice owner relation boundary guarantee四条横向Contract Chain
纵向顺序确保完整覆盖,横向复盘把分散建议连成真实工程链。
- Type chain:typed API与dispatch,经generic constraint/variance,到LINQ delegate/expression binding。
- Lifetime chain:delegate/event retention、resource ownership、disposable T、iterator/resource capture与finally cleanup。
- Execution chain:callback invocation、generic specialization、query enumeration、provider terminal与filter search。
- Failure chain:cast/format failure、partial construction、callback/query exception、strong guarantee与handler policy。
切换compile-time、lifetime、execution与failure聚类
await using var scope = await repository.OpenAsync(token);
var query = scope.Orders.Where(order => order.Total > minimum);
var snapshot = await query.ToListAsync(token); // execution and lifetime boundary每章如何达到100分学习门禁
每章固定三轮:先从Item titles建立decision questions;再操作3个chapter-specific interactive labs预测state变化;最后用代码、compile case、provider inspection或fault injection验收。现代补充必须标出版本,不覆盖原书历史位置。
↡把建议落到真实boundary,写出alternatives、chosen contract、owner与可观察acceptance,而非背诵结论。 ↡通过正常、边界、fault、compatibility与version cases证明建议在目标runtime中成立的证据集合。切换目录、决策、视觉、实践与版本门禁
read Item title -> state a decision -> predict -> interact -> run evidence -> review fault -> pass gate本章回顾:完整、分层、可复现
- 课程只对应第3版、C# 6.0、5章50条出版社目录。
- 纵向按语言、资源、泛型、LINQ、异常推进,前一章为后一章提供contract vocabulary。
- 横向以type、lifetime、execution和failure复盘真实系统。
- 每章交付专属视觉、decision artifact和normal/fault evidence。
- 现代语法作为versioned update,不篡改原书Item位置与标题。
练习
问题 1:一个返回IQueryable的generic repository应从哪三章联合审计?
问题 2:如何证明一章不是“主题相近”而是忠实覆盖?
问题 3:一条建议的最小学习闭环是什么?
术语表
名词解释
本章出现的专业名词,用大白话再讲一遍。
- official outline contract
- type contract chain
- lifetime contract chain
- decision rehearsal
- chapter evidence gate