C# Cheat Sheet 📖 āļ āļēāļĐāļē OOP āļ‚āļ­āļ‡ Microsoft — āļŠāļĢāđ‰āļēāļ‡ Web/Desktop/Mobile/Game (Unity)

C# Cheat Sheet

📖 āđ€āļāļĢāļīāđˆāļ™āļ™āļģ — āļ•āđ‰āļ­āļ‡āđ€āļ‚āđ‰āļēāđƒāļˆāļ­āļ°āđ„āļĢāļšāđ‰āļēāļ‡āļāđˆāļ­āļ™āđ€āļĢāļīāđˆāļĄ

1. C# āļ„āļ·āļ­āļ­āļ°āđ„āļĢ? — āļ āļēāļĐāļē OOP āļ‚āļ­āļ‡ Microsoft — āļŠāļĢāđ‰āļēāļ‡ Web/Desktop/Mobile/Game (Unity) — āļĢāļąāļ™āļšāļ™ .NET

2. āļ•āļīāļ”āļ•āļąāđ‰āļ‡/āļĢāļąāļ™āļ—āļĩāđˆāđ„āļŦāļ™? — āļ•āļīāļ”āļ•āļąāđ‰āļ‡ .NET SDK → dotnet new console → dotnet run

3. Syntax āļžāļ·āđ‰āļ™āļāļēāļ™ â€” āļˆāļšāļ”āđ‰āļ§āļĒ ;, āļ„āļĨāđ‰āļēāļĒ Java āļĄāļēāļ (āļ­āļ­āļāđāļšāļšāļĄāļēāđāļ‚āđˆāļ‡), comment — // /* */

4. Naming Convention — class/method/property PascalCase, parameter/local camelCase, interface ˖ āļ‚āļķāđ‰āļ™āļ•āđ‰āļ™ I (IUser)

5. Tools āļ—āļĩāđˆāđāļ™āļ°āļ™āļģ — IDE: Visual Studio (Windows), JetBrains Rider, VS Code + C# extension

📊 50 āđ‚āļ„āđ‰āļ”āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļĢāļđāđ‰

ðŸ”đ Basics (1-5)

1. Hello World: Console.WriteLine("Hello"); — āđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ

2. Main Method: static void Main(string[] args) {...} — āļˆāļļāļ”āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™ (C# 9+ āļĢāļąāļš top-level)

3. Namespace: namespace MyApp { ... } — āļˆāļąāļ”āļāļĨāļļāđˆāļĄ class

4. Using: using System; — import library

5. Input: string name = Console.ReadLine(); — āļĢāļąāļš input

ðŸ”đ Data Types (6-10)

6. Variable: int age = 30; string name = "John"; — āļĢāļ°āļšāļļ type āļ•āļĢāļ‡āđ†

7. var: var age = 30; — type inference

8. const / readonly: const int MAX = 100; readonly int x; — āļ„āđˆāļēāļ„āļ‡āļ—āļĩāđˆ

9. Nullable: int? age = null; string? name = null; — āļĢāļąāļš null āđ„āļ”āđ‰

10. Array: int[] arr = {1, 2, 3}; — āļ‚āļ™āļēāļ”āļ„āļ‡āļ—āļĩāđˆ

ðŸ”đ Operators (11-15)

11. Math: + - * / % ++ -- — āļšāļ§āļ āļĨāļš āļ„āļđāļ“ āļŦāļēāļĢ āļĄāļ­āļ”

12. Comparison: == != > < >= <= — āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļš (C# ˖ string āđƒāļŠāđ‰ == āđ„āļ”āđ‰!)

13. Logic: && || ! — AND, OR, NOT

14. Null Coalesce: string s = x ?? "default"; — āļ„āđˆāļē default āļ–āđ‰āļē null

15. Null Conditional: user?.Name?.Length — āđ„āļĄāđˆ error āļ–āđ‰āļēāđ„āļĄāđˆāļĄāļĩ

ðŸ”đ Control Flow (16-20)

16. if-else: if (x > 0) {...} else if {...} else {...} — āļ•āļąāļ”āļŠāļīāļ™āđƒāļˆ

17. Ternary: string s = x > 0 ? "+" : "-"; — if-else āļĒāđˆāļ­

18. Switch Expression: var s = x switch { 1 => "one", _ => "other" }; — C# 8+

19. For Loop: for (int i = 0; i < 10; i++) {...} — āļ§āļ™āļ‹āđ‰āļģ

20. Foreach: foreach (var item in list) {...} — āļ§āļ™ Collection

ðŸ”đ Functions / Methods (21-25)

21. Method: public int Add(int a, int b) => a + b; — expression body

22. Default Param: void Greet(string name = "World") {...} — āļ„āđˆāļē default

23. Named Args: Greet(name: "John"); — āļĢāļ°āļšāļļāļŠāļ·āđˆāļ­āļ•āļ­āļ™āđ€āļĢāļĩāļĒāļ

24. out / ref: bool TryParse(string s, out int result) — return āļŦāļĨāļēāļĒāļ„āđˆāļē

25. Lambda: Func<int, int> sq = x => x * x; — āđ„āļĄāđˆāļĄāļĩāļŠāļ·āđˆāļ­

ðŸ”đ Collections / LINQ (26-30)

26. List: List<string> list = new() { "a", "b" }; — List āļ›āļĢāļąāļšāļ‚āļ™āļēāļ”āđ„āļ”āđ‰

27. Dictionary: Dictionary<string, int> d = new(); — key-value

28. HashSet: HashSet<int> s = new() {1, 2, 3}; — āļ„āđˆāļēāđ„āļĄāđˆāļ‹āđ‰āļģ

29. LINQ: list.Where(x => x > 0).Select(x => x * 2).ToList(); — āļ­āđˆāļēāļ™ SQL-like

30. Tuple: var (a, b) = (1, 2); — return āļŦāļĨāļēāļĒāļ„āđˆāļē

ðŸ”đ OOP (31-35)

31. Class: class Dog { public string Name { get; set; } } — auto property

32. Constructor: public Dog(string name) { Name = name; } — āļŠāļĢāđ‰āļēāļ‡ instance

33. Inheritance: class Puppy : Dog { ... } — : āđāļ—āļ™ extends

34. Interface: interface IAnimal { void Speak(); } — āļ‚āļķāđ‰āļ™āļ•āđ‰āļ™ I

35. virtual / override: public virtual void Run() {} override void Run() {} — āļŠāļ·āļš method

ðŸ”đ Error Handling (36-40)

36. Try-Catch: try {...} catch (Exception e) {...} — āļ”āļąāļ error

37. Throw: throw new ArgumentException("āļœāļīāļ”!"); — āđ‚āļĒāļ™ error

38. Finally: try {...} catch {...} finally {...} — āļ—āļģāđ€āļŠāļĄāļ­

39. Using: using var file = new StreamReader("f.txt"); — auto dispose

40. When Filter: catch (Exception e) when (e.HResult > 0) — āļāļĢāļ­āļ‡ catch

ðŸ”đ Async / Advanced (41-45)

41. async/await: async Task<string> Get() { return await ...; } — āļ‡āļēāļ™ async

42. Generic: class Box<T> { public T Value; } — type parameter

43. Enum: enum Color { Red, Green, Blue } — āļŠāļļāļ”āļ„āđˆāļēāļ„āļ‡āļ—āļĩāđˆ

44. Record (C# 9+): record Point(int X, int Y); — immutable data class

45. Pattern Matching: if (obj is string s) {...} — āđ€āļŠāđ‡āļ„+āđāļ›āļĨāļ‡ type

ðŸ”đ Common Patterns (46-50)

46. String Interpolation: $"Hello {name}, age {age}" — āđƒāļŠāđˆāļ•āļąāļ§āđāļ›āļĢ

47. StringBuilder: var sb = new StringBuilder(); sb.Append("a"); — āļ•āđˆāļ­ string

48. DateTime: DateTime.Now; DateTime.Parse("2026-01-01"); — āļˆāļąāļšāđ€āļ§āļĨāļē

49. JSON: JsonSerializer.Serialize(obj); Deserialize<T>(json); — object ↔ string

50. Sort: list.Sort(); list.OrderBy(x => x.Age).ToList(); — āđ€āļĢāļĩāļĒāļ‡

ðŸ’Ą Tips & Common Mistakes

- ⚠ïļ NullReferenceException — āļšāļąāļ‡āļ„āļąāļš ?. ?? ??= — āđ€āļ›āļīāļ” nullable reference types āđƒāļ™ .csproj

- ⚠ïļ == āļšāļ™ object āđ„āļĄāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒ â€” override Equals() + GetHashCode() āđƒāļ™ custom class

- ⚠ïļ async void ˖ āļ­āļąāļ™āļ•āļĢāļēāļĒ â€” āļˆāļąāļš error āđ„āļĄāđˆāđ„āļ”āđ‰! āđƒāļŠāđ‰ async Task āļĒāļāđ€āļ§āđ‰āļ™ Event Handler

- ⚠ïļ āļ­āļĒāđˆāļē .Result / .Wait() āļšāļ™ async — āļ—āļģāđƒāļŦāđ‰ deadlock āđƒāļ™ UI thread

- ðŸ’Ą āđƒāļŠāđ‰ LINQ āđāļ—āļ™ for loop — āļ­āđˆāļēāļ™āļ‡āđˆāļēāļĒ āļˆāļąāļ” chain method āđ„āļ”āđ‰āļŠāļ§āļĒ

- ðŸ’Ą record āļŠāļģāļŦāļĢāļąāļš DTO — immutable + value equality + auto getters

- ðŸ’Ą Top-level statements (C# 9+) — āđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āđ€āļ‚āļĩāļĒāļ™ class Program { ... Main(...) } āđāļĨāđ‰āļ§ â€” āļŠāļąāđ‰āļ™ āļŠāļ°āļ­āļēāļ”

7/6 āđāļāđ‰āđ„āļ‚āđ€āļ›āđ‡āļ™

... āļ­āđˆāļēāļ™āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāļˆāļēāļāļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļŠāđˆāļ§āļ™āļ•āļąāļ§āļ—āļĩāđˆāđ„āļ”āđ‰āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ āļēāļĐāļē C# āļžāļšāļ§āđˆāļē C# āđ€āļ›āđ‡āļ™āļ āļēāļĐāļēāļ—āļĩāđˆāļ—āļĢāļ‡āļžāļĨāļąāļ‡āđāļĨāļ°āđ€āļŦāļĄāļēāļ°āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļžāļąāļ’āļ™āļēāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđƒāļ™āļŦāļĨāļēāļĒāđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄ āļ—āļąāđ‰āļ‡ Web, Desktop, Mobile āđāļĨāļ°āđ€āļāļĄāļšāļ™ Unity āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļ C# āđ€āļ›āđ‡āļ™āļ āļēāļĐāļēāļ—āļĩāđˆāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āđāļ™āļ§āļ„āļīāļ” Object-Oriented Programming (OOP) āļˆāļķāļ‡āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āđ‚āļ„āđ‰āļ”āļĄāļĩāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļĢāļ°āļšāļšāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļ”āļđāđāļĨāļĢāļąāļāļĐāļēāđ„āļ”āđ‰āļ‡āđˆāļēāļĒ āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļŠāļģāļ„āļąāļāļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ„āļ·āļ­āļāļēāļĢāđ€āļ‚āđ‰āļēāđƒāļˆ Syntax āļžāļ·āđ‰āļ™āļāļēāļ™ āđ€āļŠāđˆāļ™ āļāļēāļĢāļˆāļšāļ„āļģāļŠāļąāđˆāļ‡āļ”āđ‰āļ§āļĒ ; āļāļēāļĢāđƒāļŠāđ‰ comment āļ—āļąāđ‰āļ‡āđāļšāļš // āđāļĨāļ° /* */ āļĢāļ§āļĄāļ–āļķāļ‡āļāļēāļĢāļ•āļąāđ‰āļ‡āļŠāļ·āđˆāļ­āļ•āļąāļ§āđāļ›āļĢāđāļĨāļ°āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ•āļēāļĄāļĄāļēāļ•āļĢāļāļēāļ™ PascalCase āđāļĨāļ° camelCase āļ‹āļķāđˆāļ‡āļ—āļģāđƒāļŦāđ‰āđ‚āļ„āđ‰āļ”āļ­āđˆāļēāļ™āļ‡āđˆāļēāļĒāđāļĨāļ°āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™āđ€āļ”āļĩāļĒāļ§āļāļąāļ™ āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰ āļāļēāļĢāļĢāļđāđ‰āļˆāļąāļāļ§āļīāļ˜āļĩāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļŠāļļāļ”āļ„āļģāļŠāļąāđˆāļ‡āļ„āļ§āļšāļ„āļļāļĄāļāļēāļĢāđ„āļŦāļĨ āđ€āļŠāđˆāļ™ if-else, switch, āđāļĨāļ° loop āļˆāļ°āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ„āļ§āļšāļ„āļļāļĄāļĨāļ­āļˆāļīāļāļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđƒāļ™āļŠāđˆāļ§āļ™āļ‚āļ­āļ‡ Collections āđāļĨāļ° LINQ āđ€āļ›āđ‡āļ™āļŸāļĩāđ€āļˆāļ­āļĢāđŒāļ—āļĩāđˆāļœāļĄāđāļ™āļ°āļ™āļģāđƒāļŦāđ‰āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđ€āļ›āđ‡āļ™āļ­āļĒāđˆāļēāļ‡āļĒāļīāđˆāļ‡ āđ€āļžāļĢāļēāļ° LINQ āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨ Collections āļ•āđˆāļēāļ‡āđ† āđ€āļŠāđˆāļ™ List, Dictionary āļŦāļĢāļ·āļ­ HashSet āļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™āđāļĨāļ°āđ‚āļ„āđ‰āļ”āļŠāļ°āļ­āļēāļ”āļ•āļēāļĄāļēāļ āđ‚āļ”āļĒāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļ„āļģāļŠāļąāđˆāļ‡āđāļšāļš SQL-like āļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰āđ€āļ‚āđ‰āļēāđƒāļˆāļ‡āđˆāļēāļĒāđāļĨāļ°āđ€āļĢāđ‡āļ§āļ‚āļķāđ‰āļ™ āļŠāļģāļŦāļĢāļąāļšāđ‚āļ›āļĢāđ€āļˆāļāļ•āđŒāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļĢāļ­āļ‡āļĢāļąāļšāļ‡āļēāļ™āđāļšāļš Async āļāļēāļĢāđƒāļŠāđ‰ async/await āļˆāļ°āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļģāļ‡āļēāļ™āđāļšāļšāđ„āļĄāđˆāļšāļĨāđ‡āļ­āļāđāļĨāļ°āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‡āļēāļ™āđ„āļ”āđ‰āļ”āļĩāļ‚āļķāđ‰āļ™ āļŠāļĢāđ‰āļēāļ‡āļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĩāđˆāļĨāļ·āđˆāļ™āđ„āļŦāļĨāđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āļ­āļĒāđˆāļēāļ‡āļĒāļīāđˆāļ‡āđƒāļ™āļāļēāļĢāļžāļąāļ’āļ™āļēāđ€āļ§āđ‡āļšāļŦāļĢāļ·āļ­āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ—āļĩāđˆāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļāļąāļšāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āļšāļĢāļīāļāļēāļĢāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒ āļ‚āđ‰āļ­āļ„āļ§āļĢāļĢāļ°āļ§āļąāļ‡āļ—āļĩāđˆāļžāļšāđ€āļˆāļ­āļšāđˆāļ­āļĒāļ„āļ·āļ­ NullReferenceException āļ‹āļķāđˆāļ‡āļĄāļąāļāđ€āļāļīāļ”āļˆāļēāļāļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ•āļąāļ§āđāļ›āļĢāļ—āļĩāđˆāļĄāļĩāļ„āđˆāļē null āļāļēāļĢāđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™ nullable reference types āđāļĨāļ°āļāļēāļĢāđƒāļŠāđ‰ null-conditional operators āļˆāļ°āļŠāđˆāļ§āļĒāļ›āđ‰āļ­āļ‡āļāļąāļ™āļ›āļąāļāļŦāļēāļ™āļĩāđ‰āđ„āļ”āđ‰ āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰āļĒāļąāļ‡āļ„āļ§āļĢāļĢāļ°āļ§āļąāļ‡āļāļēāļĢāđƒāļŠāđ‰ async void āļ—āļĩāđˆāđ„āļĄāđˆāļ„āļ§āļĢāđƒāļŠāđ‰āđƒāļ™āļ‡āļēāļ™āļ—āļąāđˆāļ§āđ„āļ› āđ€āļžāļĢāļēāļ°āļˆāļ°āļˆāļąāļšāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđ„āļĄāđˆāđ„āļ”āđ‰āđāļĨāļ°āļ­āļēāļˆāļ—āļģāđƒāļŦāđ‰āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ„āļĄāđˆāđ€āļŠāļ–āļĩāļĒāļĢ āļŠāļļāļ”āļ—āđ‰āļēāļĒāļ™āļĩāđ‰ āļāļēāļĢāđ€āļĨāļ·āļ­āļāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļžāļąāļ’āļ™āļē āđ€āļŠāđˆāļ™ Visual Studio, JetBrains Rider āļŦāļĢāļ·āļ­ VS Code āļ—āļĩāđˆāļĄāļĩāļ›āļĨāļąāđŠāļāļ­āļīāļ™ C# āļˆāļ°āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ„āđ‰āļ”āđāļĨāļ°āļ”āļĩāļšāļąāļāđ‚āļ›āļĢāđāļāļĢāļĄāļŠāļ°āļ”āļ§āļāđāļĨāļ°āļĢāļ§āļ”āđ€āļĢāđ‡āļ§āļ‚āļķāđ‰āļ™ āļĨāļ­āļ‡āļāļķāļāđ€āļ‚āļĩāļĒāļ™āđ‚āļ„āđ‰āļ” 50 āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆāđāļ™āļ°āļ™āļģāđƒāļ™āļ„āļđāđˆāļĄāļ·āļ­āļ™āļĩāđ‰āđ€āļŠāļ·āđˆāļ­āļ§āđˆāļēāļˆāļ°āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļ„āļļāļ“āđ€āļ‚āđ‰āļēāđƒāļˆāļ āļēāļĐāļē C# āļ­āļĒāđˆāļēāļ‡āļĨāļķāļāļ‹āļķāđ‰āļ‡āđāļĨāļ°āļžāļĢāđ‰āļ­āļĄāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđ€āļˆāļāļ•āđŒāļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĄāļąāđˆāļ™āđƒāļˆ