๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ
ๅฐ้พ™่™พๅฐ้พ™่™พAI
๐Ÿค–

C#

Avoid common C# mistakes โ€” null traps, async pitfalls, LINQ gotchas, and disposal leaks.

ไธ‹่ฝฝ2.0k
ๆ˜Ÿๆ ‡3
็‰ˆๆœฌ1.0.1
ๅ…ถไป–
ๅฎ‰ๅ…จ้€š่ฟ‡
๐Ÿ’ฌPrompt

ๆŠ€่ƒฝ่ฏดๆ˜Ž


name: C# slug: csharp version: 1.0.1 description: Write robust C# avoiding null traps, async deadlocks, and LINQ pitfalls. metadata: {"clawdbot":{"emoji":"๐Ÿ’œ","requires":{"bins":["dotnet"]},"os":["linux","darwin","win32"]}}

Quick Reference

TopicFile
Null reference, nullable typesnulls.md
Async/await, deadlocksasync.md
Deferred execution, closureslinq.md
Value vs reference, boxingtypes.md
Iteration, equalitycollections.md
IDisposable, using, finalizersdispose.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

ๅฆ‚ไฝ•ไฝฟ็”จใ€ŒC#ใ€๏ผŸ

  1. ๆ‰“ๅผ€ๅฐ้พ™่™พAI๏ผˆWeb ๆˆ– iOS App๏ผ‰
  2. ็‚นๅ‡ปไธŠๆ–นใ€Œ็ซ‹ๅณไฝฟ็”จใ€ๆŒ‰้’ฎ๏ผŒๆˆ–ๅœจๅฏน่ฏๆก†ไธญ่พ“ๅ…ฅไปปๅŠกๆ่ฟฐ
  3. ๅฐ้พ™่™พAI ไผš่‡ชๅŠจๅŒน้…ๅนถ่ฐƒ็”จใ€ŒC#ใ€ๆŠ€่ƒฝๅฎŒๆˆไปปๅŠก
  4. ็ป“ๆžœๅณๆ—ถๅ‘ˆ็Žฐ๏ผŒๆ”ฏๆŒ็ปง็ปญๅฏน่ฏไผ˜ๅŒ–

็›ธๅ…ณๆŠ€่ƒฝ