返回 Skill 列表
extension
分类: 效率与办公无需 API Key

C#

"避开 C# 常见错误——空陷阱、异步陷阱、LINQ 陷阱及资源泄漏。"

person作者: ivangdavilahubclawhub

Quick Reference

| Topic | File | |-------|------| | Null reference, nullable types | nulls.md | | Async/await, deadlocks | async.md | | Deferred execution, closures | linq.md | | Value vs reference, boxing | types.md | | Iteration, equality | collections.md | | IDisposable, using, finalizers | dispose.md |

Critical Rules

  • ?. and ?? prevent NRE but ! overrides warnings — still crashes if null
  • .Result or .Wait() on UI thread — deadlock, use await or ConfigureAwait(false)
  • LINQ is lazy — query.Where(...) doesn't execute until iteration
  • Multiple enumeration of IEnumerable — may re-query database, call .ToList() first
  • Closure captures variable, not value — loop variable in lambda captures last value
  • Struct in async method — copied, modifications lost after await
  • String comparison culture — StringComparison.Ordinal for code, CurrentCulture for UI
  • GetHashCode() must be stable — mutable fields break dictionary lookup
  • Modifying collection while iterating — throws, use .ToList() to iterate copy
  • decimal for money — float/double have precision loss
  • readonly struct prevents defensive copies — use for performance
  • sealed prevents inheritance — enables devirtualization optimization