| 1 | <!doctype html> |
| 2 | <html lang="en"> |
| 3 | <head> |
| 4 | <meta charset="utf-8"> |
| 5 | <meta name="viewport" content="width=device-width,initial-scale=1"> |
| 6 | <title>C# Cheat Sheet</title> |
| 7 | <style> |
| 8 | :root{--bg:#09070e;--panel:#15101c;--panel2:#1b1424;--text:#f5effa;--muted:#b8a9c4;--line:#39294a;--accent:#a277ff;--accent2:#c7adff;--cyan:#6edcff;--warn:#ffd166;--shadow:0 16px 42px rgba(0,0,0,.34)} |
| 9 | *{box-sizing:border-box}html{scroll-behavior:smooth} |
| 10 | body{margin:0;background:radial-gradient(circle at 15% 0,rgba(162,119,255,.15),transparent 30rem),radial-gradient(circle at 90% 0,rgba(110,220,255,.08),transparent 30rem),var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif} |
| 11 | .hero{max-width:1500px;margin:auto;padding:48px 24px 26px} |
| 12 | .badge{display:inline-block;border:1px solid rgba(162,119,255,.4);background:rgba(162,119,255,.09);color:var(--accent2);padding:7px 10px;border-radius:999px;font:800 12px ui-monospace,monospace;letter-spacing:.08em} |
| 13 | h1{font-size:clamp(40px,7vw,82px);line-height:.94;letter-spacing:-.055em;margin:18px 0} |
| 14 | .hero p{max-width:980px;color:var(--muted);font-size:18px;line-height:1.6} |
| 15 | .stats{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px} |
| 16 | .stat{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:11px 15px;box-shadow:var(--shadow)}.stat b{color:var(--accent2);font-family:ui-monospace,monospace} |
| 17 | .toolbar{position:sticky;top:0;z-index:20;background:rgba(9,7,14,.9);backdrop-filter:blur(16px);border-block:1px solid var(--line)} |
| 18 | .toolbarin{max-width:1500px;margin:auto;padding:13px 24px;display:flex;gap:10px} |
| 19 | #search{flex:1;min-width:0;background:#110d17;border:1px solid #4a3560;border-radius:12px;color:white;padding:13px 15px;font-size:15px;outline:none} |
| 20 | #search:focus{border-color:var(--accent)}.toolbtn{border:1px solid #4a3560;background:#17101f;color:var(--text);border-radius:11px;padding:11px 13px;font-weight:800;cursor:pointer} |
| 21 | .note{max-width:1500px;margin:20px auto 0;padding:0 24px}.notebox{border:1px solid rgba(110,220,255,.34);background:rgba(110,220,255,.07);border-radius:14px;padding:13px 15px;color:#d9f5ff;font-size:13px} |
| 22 | .layout{max-width:1500px;margin:auto;padding:22px 24px 42px;display:grid;grid-template-columns:280px 1fr;gap:22px} |
| 23 | nav{position:sticky;top:76px;align-self:start;max-height:calc(100vh - 96px);overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:13px} |
| 24 | nav strong{display:block;color:var(--accent2);font:800 11px ui-monospace,monospace;padding:5px 9px 9px;letter-spacing:.08em} |
| 25 | nav a{display:block;color:var(--muted);text-decoration:none;padding:7px 9px;border-radius:8px;font-size:12px}nav a:hover{background:#21172c;color:white} |
| 26 | .section{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:rgba(21,16,28,.95);margin-bottom:17px;box-shadow:var(--shadow)} |
| 27 | .sectionhead{width:100%;display:grid;grid-template-columns:1fr auto auto;gap:14px;align-items:center;border:0;background:linear-gradient(#20172b,#15101c);color:white;padding:18px 20px;text-align:left;cursor:pointer;font-size:20px;font-weight:900} |
| 28 | .sectionhead small{font:700 11px ui-monospace,monospace;color:var(--muted)}.sectionhead b{transition:.15s}.section.collapsed .sectionhead b{transform:rotate(-90deg)} |
| 29 | .body{padding:15px}.section.collapsed .body{display:none} |
| 30 | .grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px} |
| 31 | .card{background:var(--panel2);border:1px solid #3c2b4d;border-radius:14px;padding:13px;min-width:0}.card:hover{border-color:#674b83}.card.warning{border-color:rgba(255,209,102,.35)} |
| 32 | .cmdrow{display:flex;gap:10px;align-items:flex-start}pre{margin:0;flex:1;white-space:pre-wrap;word-break:break-word} |
| 33 | code{color:var(--accent2);font:800 13px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace} |
| 34 | .copy{border:1px solid rgba(162,119,255,.32);background:#1c1028;color:var(--accent2);border-radius:8px;padding:5px 8px;font:800 10px ui-monospace,monospace;cursor:pointer} |
| 35 | .card p{margin:8px 0 0;color:var(--muted);font-size:13px;line-height:1.45} |
| 36 | .hidden{display:none!important} |
| 37 | footer{max-width:1500px;margin:auto;padding:0 24px 38px;color:#806f8c;font-size:12px} |
| 38 | @media(max-width:1000px){.layout{grid-template-columns:1fr}nav{position:static;max-height:none;display:flex;gap:5px;overflow:auto;white-space:nowrap}nav strong{display:none}nav a{display:inline-block}} |
| 39 | @media(max-width:720px){.grid{grid-template-columns:1fr}.hero,.layout,.toolbarin,.note{padding-left:14px;padding-right:14px}.sectionhead{grid-template-columns:1fr auto}.sectionhead small{display:none}} |
| 40 | @media print{.toolbar,nav,.copy{display:none!important}body{background:white;color:black}.layout{display:block;max-width:none}.card{background:white;border:1px solid #bbb}code{color:black}.card p{color:#333}} |
| 41 | </style> |
| 42 | </head> |
| 43 | <body> |
| 44 | <header class="hero"> |
| 45 | <span class="badge">C# / .NET MEGA REFERENCE</span> |
| 46 | <h1>C#<br>Cheat Sheet</h1> |
| 47 | <p>A massive searchable, copy-ready C# and .NET reference covering syntax, OOP, collections, LINQ, async/await, files, JSON, regex, concurrency, reflection, testing, ASP.NET Core, Entity Framework Core, .NET CLI, and more.</p> |
| 48 | <div class="stats"><div class="stat"><b>442</b> commands & snippets</div><div class="stat"><b>47</b> sections</div><div class="stat"><b>1</b> standalone HTML file</div></div> |
| 49 | </header> |
| 50 | |
| 51 | <div class="toolbar"><div class="toolbarin"> |
| 52 | <input id="search" type="search" placeholder="Search C#, .NET, LINQ, ASP.NET Core, EF Core, or syntax…"> |
| 53 | <button class="toolbtn" id="expand">Expand All</button> |
| 54 | <button class="toolbtn" id="collapse">Collapse All</button> |
| 55 | </div></div> |
| 56 | |
| 57 | <div class="note"><div class="notebox"><b>C# note:</b> This sheet targets modern C# and .NET. Some framework examples such as xUnit and Entity Framework Core require NuGet packages. Commands marked with ⚠ can delete files or directories.</div></div> |
| 58 | |
| 59 | <div class="layout"> |
| 60 | <nav><strong>JUMP TO SECTION</strong><a href="#basics---syntax">Basics & Syntax</a><a href="#types---conversion">Types & Conversion</a><a href="#operators---math">Operators & Math</a><a href="#strings">Strings</a><a href="#arrays">Arrays</a><a href="#collections---list">Collections — List</a><a href="#collections---dictionary">Collections — Dictionary</a><a href="#collections---set--queue--stack">Collections — Set, Queue, Stack</a><a href="#conditionals">Conditionals</a><a href="#loops">Loops</a><a href="#methods">Methods</a><a href="#classes---objects">Classes & Objects</a><a href="#inheritance---interfaces">Inheritance & Interfaces</a><a href="#records">Records</a><a href="#structs---enums">Structs & Enums</a><a href="#generics">Generics</a><a href="#delegates---lambdas">Delegates & Lambdas</a><a href="#events">Events</a><a href="#linq-basics">LINQ Basics</a><a href="#linq-advanced">LINQ Advanced</a><a href="#query-syntax-linq">Query Syntax LINQ</a><a href="#null-handling">Null Handling</a><a href="#exceptions">Exceptions</a><a href="#files---directories">Files & Directories</a><a href="#streams">Streams</a><a href="#json---system-text-json">JSON — System.Text.Json</a><a href="#dates---time">Dates & Time</a><a href="#regular-expressions">Regular Expressions</a><a href="#async---await">Async & Await</a><a href="#tasks---parallelism">Tasks & Parallelism</a><a href="#threads---synchronization">Threads & Synchronization</a><a href="#http-client">HTTP Client</a><a href="#console-input---cli">Console Input & CLI</a><a href="#environment---system">Environment & System</a><a href="#reflection">Reflection</a><a href="#attributes">Attributes</a><a href="#tuples---deconstruction">Tuples & Deconstruction</a><a href="#pattern-matching">Pattern Matching</a><a href="#net-cli">.NET CLI</a><a href="#nuget">NuGet</a><a href="#unit-testing">Unit Testing</a><a href="#asp-net-core-basics">ASP.NET Core Basics</a><a href="#asp-net-core-dependency-injection">ASP.NET Core Dependency Injection</a><a href="#entity-framework-core">Entity Framework Core</a><a href="#logging">Logging</a><a href="#useful-one-liners">Useful One-Liners</a><a href="#common-pitfalls">Common Pitfalls</a></nav> |
| 61 | <main><section class="section" id="basics---syntax"><button class="sectionhead" aria-expanded="true"><span>Basics & Syntax</span><small>15 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="basics & syntax console.writeline("hello, world!"); print a line to the console."><div class="cmdrow"><pre><code>Console.WriteLine("Hello, world!");</code></pre><button class="copy" data-copy="Console.WriteLine("Hello, world!");">COPY</button></div><p>Print a line to the console.</p></article><article class="card" data-search="basics & syntax console.write("hello"); print without a trailing newline."><div class="cmdrow"><pre><code>Console.Write("Hello");</code></pre><button class="copy" data-copy="Console.Write("Hello");">COPY</button></div><p>Print without a trailing newline.</p></article><article class="card" data-search="basics & syntax int age = 18; declare an integer variable."><div class="cmdrow"><pre><code>int age = 18;</code></pre><button class="copy" data-copy="int age = 18;">COPY</button></div><p>Declare an integer variable.</p></article><article class="card" data-search="basics & syntax double price = 19.99; declare a double."><div class="cmdrow"><pre><code>double price = 19.99;</code></pre><button class="copy" data-copy="double price = 19.99;">COPY</button></div><p>Declare a double.</p></article><article class="card" data-search="basics & syntax bool enabled = true; declare a boolean."><div class="cmdrow"><pre><code>bool enabled = true;</code></pre><button class="copy" data-copy="bool enabled = true;">COPY</button></div><p>Declare a Boolean.</p></article><article class="card" data-search="basics & syntax char grade = 'a'; declare a character."><div class="cmdrow"><pre><code>char grade = 'A';</code></pre><button class="copy" data-copy="char grade = 'A';">COPY</button></div><p>Declare a character.</p></article><article class="card" data-search="basics & syntax string name = "ada"; declare a string."><div class="cmdrow"><pre><code>string name = "Ada";</code></pre><button class="copy" data-copy="string name = "Ada";">COPY</button></div><p>Declare a string.</p></article><article class="card" data-search="basics & syntax var count = 10; use local type inference."><div class="cmdrow"><pre><code>var count = 10;</code></pre><button class="copy" data-copy="var count = 10;">COPY</button></div><p>Use local type inference.</p></article><article class="card" data-search="basics & syntax const double pi = 3.14159; declare a compile-time constant."><div class="cmdrow"><pre><code>const double Pi = 3.14159;</code></pre><button class="copy" data-copy="const double Pi = 3.14159;">COPY</button></div><p>Declare a compile-time constant.</p></article><article class="card" data-search="basics & syntax object value = 42; store a value as object."><div class="cmdrow"><pre><code>object value = 42;</code></pre><button class="copy" data-copy="object value = 42;">COPY</button></div><p>Store a value as object.</p></article><article class="card" data-search="basics & syntax dynamic value = 42; use dynamic runtime binding."><div class="cmdrow"><pre><code>dynamic value = 42;</code></pre><button class="copy" data-copy="dynamic value = 42;">COPY</button></div><p>Use dynamic runtime binding.</p></article><article class="card" data-search="basics & syntax int? maybeage = null; declare a nullable value type."><div class="cmdrow"><pre><code>int? maybeAge = null;</code></pre><button class="copy" data-copy="int? maybeAge = null;">COPY</button></div><p>Declare a nullable value type.</p></article><article class="card" data-search="basics & syntax string? maybename = null; declare a nullable reference type when enabled."><div class="cmdrow"><pre><code>string? maybeName = null;</code></pre><button class="copy" data-copy="string? maybeName = null;">COPY</button></div><p>Declare a nullable reference type when enabled.</p></article><article class="card" data-search="basics & syntax // comment single-line comment."><div class="cmdrow"><pre><code>// comment</code></pre><button class="copy" data-copy="// comment">COPY</button></div><p>Single-line comment.</p></article><article class="card" data-search="basics & syntax /* multi-line comment */ block comment."><div class="cmdrow"><pre><code>/* multi-line comment */</code></pre><button class="copy" data-copy="/* multi-line comment */">COPY</button></div><p>Block comment.</p></article></div></div></section><section class="section" id="types---conversion"><button class="sectionhead" aria-expanded="true"><span>Types & Conversion</span><small>11 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="types & conversion typeof(int) get a type object at compile time."><div class="cmdrow"><pre><code>typeof(int)</code></pre><button class="copy" data-copy="typeof(int)">COPY</button></div><p>Get a Type object at compile time.</p></article><article class="card" data-search="types & conversion value.gettype() get an object's runtime type."><div class="cmdrow"><pre><code>value.GetType()</code></pre><button class="copy" data-copy="value.GetType()">COPY</button></div><p>Get an object's runtime type.</p></article><article class="card" data-search="types & conversion int.parse("42") parse a string as int."><div class="cmdrow"><pre><code>int.Parse("42")</code></pre><button class="copy" data-copy="int.Parse("42")">COPY</button></div><p>Parse a string as int.</p></article><article class="card" data-search="types & conversion int.tryparse("42", out int n) safely attempt integer parsing."><div class="cmdrow"><pre><code>int.TryParse("42", out int n)</code></pre><button class="copy" data-copy="int.TryParse("42", out int n)">COPY</button></div><p>Safely attempt integer parsing.</p></article><article class="card" data-search="types & conversion convert.toint32("42") convert a value to int."><div class="cmdrow"><pre><code>Convert.ToInt32("42")</code></pre><button class="copy" data-copy="Convert.ToInt32("42")">COPY</button></div><p>Convert a value to int.</p></article><article class="card" data-search="types & conversion convert.tostring(123) convert a value to string."><div class="cmdrow"><pre><code>Convert.ToString(123)</code></pre><button class="copy" data-copy="Convert.ToString(123)">COPY</button></div><p>Convert a value to string.</p></article><article class="card" data-search="types & conversion double.parse("3.14") parse a double."><div class="cmdrow"><pre><code>double.Parse("3.14")</code></pre><button class="copy" data-copy="double.Parse("3.14")">COPY</button></div><p>Parse a double.</p></article><article class="card" data-search="types & conversion (int)3.9 explicit numeric cast."><div class="cmdrow"><pre><code>(int)3.9</code></pre><button class="copy" data-copy="(int)3.9">COPY</button></div><p>Explicit numeric cast.</p></article><article class="card" data-search="types & conversion double x = 10; implicit numeric conversion from int to double."><div class="cmdrow"><pre><code>double x = 10;</code></pre><button class="copy" data-copy="double x = 10;">COPY</button></div><p>Implicit numeric conversion from int to double.</p></article><article class="card" data-search="types & conversion value is string check runtime type."><div class="cmdrow"><pre><code>value is string</code></pre><button class="copy" data-copy="value is string">COPY</button></div><p>Check runtime type.</p></article><article class="card" data-search="types & conversion value as string safe reference cast returning null on failure."><div class="cmdrow"><pre><code>value as string</code></pre><button class="copy" data-copy="value as string">COPY</button></div><p>Safe reference cast returning null on failure.</p></article></div></div></section><section class="section" id="operators---math"><button class="sectionhead" aria-expanded="true"><span>Operators & Math</span><small>23 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="operators & math a + b addition."><div class="cmdrow"><pre><code>a + b</code></pre><button class="copy" data-copy="a + b">COPY</button></div><p>Addition.</p></article><article class="card" data-search="operators & math a - b subtraction."><div class="cmdrow"><pre><code>a - b</code></pre><button class="copy" data-copy="a - b">COPY</button></div><p>Subtraction.</p></article><article class="card" data-search="operators & math a * b multiplication."><div class="cmdrow"><pre><code>a * b</code></pre><button class="copy" data-copy="a * b">COPY</button></div><p>Multiplication.</p></article><article class="card" data-search="operators & math a / b division."><div class="cmdrow"><pre><code>a / b</code></pre><button class="copy" data-copy="a / b">COPY</button></div><p>Division.</p></article><article class="card" data-search="operators & math a % b remainder."><div class="cmdrow"><pre><code>a % b</code></pre><button class="copy" data-copy="a % b">COPY</button></div><p>Remainder.</p></article><article class="card" data-search="operators & math a == b equality."><div class="cmdrow"><pre><code>a == b</code></pre><button class="copy" data-copy="a == b">COPY</button></div><p>Equality.</p></article><article class="card" data-search="operators & math a != b inequality."><div class="cmdrow"><pre><code>a != b</code></pre><button class="copy" data-copy="a != b">COPY</button></div><p>Inequality.</p></article><article class="card" data-search="operators & math a > b greater than."><div class="cmdrow"><pre><code>a > b</code></pre><button class="copy" data-copy="a > b">COPY</button></div><p>Greater than.</p></article><article class="card" data-search="operators & math a >= b greater than or equal."><div class="cmdrow"><pre><code>a >= b</code></pre><button class="copy" data-copy="a >= b">COPY</button></div><p>Greater than or equal.</p></article><article class="card" data-search="operators & math a && b logical and."><div class="cmdrow"><pre><code>a && b</code></pre><button class="copy" data-copy="a && b">COPY</button></div><p>Logical AND.</p></article><article class="card" data-search="operators & math a || b logical or."><div class="cmdrow"><pre><code>a || b</code></pre><button class="copy" data-copy="a || b">COPY</button></div><p>Logical OR.</p></article><article class="card" data-search="operators & math !a logical not."><div class="cmdrow"><pre><code>!a</code></pre><button class="copy" data-copy="!a">COPY</button></div><p>Logical NOT.</p></article><article class="card" data-search="operators & math a ?? b null-coalescing operator."><div class="cmdrow"><pre><code>a ?? b</code></pre><button class="copy" data-copy="a ?? b">COPY</button></div><p>Null-coalescing operator.</p></article><article class="card" data-search="operators & math a ??= b assign only if null."><div class="cmdrow"><pre><code>a ??= b</code></pre><button class="copy" data-copy="a ??= b">COPY</button></div><p>Assign only if null.</p></article><article class="card" data-search="operators & math condition ? yes : no ternary conditional."><div class="cmdrow"><pre><code>condition ? yes : no</code></pre><button class="copy" data-copy="condition ? yes : no">COPY</button></div><p>Ternary conditional.</p></article><article class="card" data-search="operators & math math.abs(-8) absolute value."><div class="cmdrow"><pre><code>Math.Abs(-8)</code></pre><button class="copy" data-copy="Math.Abs(-8)">COPY</button></div><p>Absolute value.</p></article><article class="card" data-search="operators & math math.max(a, b) maximum."><div class="cmdrow"><pre><code>Math.Max(a, b)</code></pre><button class="copy" data-copy="Math.Max(a, b)">COPY</button></div><p>Maximum.</p></article><article class="card" data-search="operators & math math.min(a, b) minimum."><div class="cmdrow"><pre><code>Math.Min(a, b)</code></pre><button class="copy" data-copy="Math.Min(a, b)">COPY</button></div><p>Minimum.</p></article><article class="card" data-search="operators & math math.pow(2, 8) exponentiation."><div class="cmdrow"><pre><code>Math.Pow(2, 8)</code></pre><button class="copy" data-copy="Math.Pow(2, 8)">COPY</button></div><p>Exponentiation.</p></article><article class="card" data-search="operators & math math.sqrt(81) square root."><div class="cmdrow"><pre><code>Math.Sqrt(81)</code></pre><button class="copy" data-copy="Math.Sqrt(81)">COPY</button></div><p>Square root.</p></article><article class="card" data-search="operators & math math.round(3.14159, 2) round to two decimal places."><div class="cmdrow"><pre><code>Math.Round(3.14159, 2)</code></pre><button class="copy" data-copy="Math.Round(3.14159, 2)">COPY</button></div><p>Round to two decimal places.</p></article><article class="card" data-search="operators & math math.floor(3.9) round down."><div class="cmdrow"><pre><code>Math.Floor(3.9)</code></pre><button class="copy" data-copy="Math.Floor(3.9)">COPY</button></div><p>Round down.</p></article><article class="card" data-search="operators & math math.ceiling(3.1) round up."><div class="cmdrow"><pre><code>Math.Ceiling(3.1)</code></pre><button class="copy" data-copy="Math.Ceiling(3.1)">COPY</button></div><p>Round up.</p></article></div></div></section><section class="section" id="strings"><button class="sectionhead" aria-expanded="true"><span>Strings</span><small>22 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="strings string text = "hello"; create a string."><div class="cmdrow"><pre><code>string text = "hello";</code></pre><button class="copy" data-copy="string text = "hello";">COPY</button></div><p>Create a string.</p></article><article class="card" data-search="strings text.length get string length."><div class="cmdrow"><pre><code>text.Length</code></pre><button class="copy" data-copy="text.Length">COPY</button></div><p>Get string length.</p></article><article class="card" data-search="strings text[0] get first character."><div class="cmdrow"><pre><code>text[0]</code></pre><button class="copy" data-copy="text[0]">COPY</button></div><p>Get first character.</p></article><article class="card" data-search="strings text.substring(1, 3) extract part of a string."><div class="cmdrow"><pre><code>text.Substring(1, 3)</code></pre><button class="copy" data-copy="text.Substring(1, 3)">COPY</button></div><p>Extract part of a string.</p></article><article class="card" data-search="strings text.toupper() convert to uppercase."><div class="cmdrow"><pre><code>text.ToUpper()</code></pre><button class="copy" data-copy="text.ToUpper()">COPY</button></div><p>Convert to uppercase.</p></article><article class="card" data-search="strings text.tolower() convert to lowercase."><div class="cmdrow"><pre><code>text.ToLower()</code></pre><button class="copy" data-copy="text.ToLower()">COPY</button></div><p>Convert to lowercase.</p></article><article class="card" data-search="strings text.trim() remove surrounding whitespace."><div class="cmdrow"><pre><code>text.Trim()</code></pre><button class="copy" data-copy="text.Trim()">COPY</button></div><p>Remove surrounding whitespace.</p></article><article class="card" data-search="strings text.trimstart() remove leading whitespace."><div class="cmdrow"><pre><code>text.TrimStart()</code></pre><button class="copy" data-copy="text.TrimStart()">COPY</button></div><p>Remove leading whitespace.</p></article><article class="card" data-search="strings text.trimend() remove trailing whitespace."><div class="cmdrow"><pre><code>text.TrimEnd()</code></pre><button class="copy" data-copy="text.TrimEnd()">COPY</button></div><p>Remove trailing whitespace.</p></article><article class="card" data-search="strings text.contains("cat") check substring presence."><div class="cmdrow"><pre><code>text.Contains("cat")</code></pre><button class="copy" data-copy="text.Contains("cat")">COPY</button></div><p>Check substring presence.</p></article><article class="card" data-search="strings text.startswith("pre") check prefix."><div class="cmdrow"><pre><code>text.StartsWith("pre")</code></pre><button class="copy" data-copy="text.StartsWith("pre")">COPY</button></div><p>Check prefix.</p></article><article class="card" data-search="strings text.endswith(".txt") check suffix."><div class="cmdrow"><pre><code>text.EndsWith(".txt")</code></pre><button class="copy" data-copy="text.EndsWith(".txt")">COPY</button></div><p>Check suffix.</p></article><article class="card" data-search="strings text.indexof("cat") find first substring index."><div class="cmdrow"><pre><code>text.IndexOf("cat")</code></pre><button class="copy" data-copy="text.IndexOf("cat")">COPY</button></div><p>Find first substring index.</p></article><article class="card" data-search="strings text.replace("old", "new") replace text."><div class="cmdrow"><pre><code>text.Replace("old", "new")</code></pre><button class="copy" data-copy="text.Replace("old", "new")">COPY</button></div><p>Replace text.</p></article><article class="card" data-search="strings text.split(",") split into an array."><div class="cmdrow"><pre><code>text.Split(",")</code></pre><button class="copy" data-copy="text.Split(",")">COPY</button></div><p>Split into an array.</p></article><article class="card" data-search="strings string.join(", ", items) join strings."><div class="cmdrow"><pre><code>string.Join(", ", items)</code></pre><button class="copy" data-copy="string.Join(", ", items)">COPY</button></div><p>Join strings.</p></article><article class="card" data-search="strings $"hello {name}" string interpolation."><div class="cmdrow"><pre><code>$"Hello {name}"</code></pre><button class="copy" data-copy="$"Hello {name}"">COPY</button></div><p>String interpolation.</p></article><article class="card" data-search="strings $"{price:f2}" format a number with two decimal places."><div class="cmdrow"><pre><code>$"{price:F2}"</code></pre><button class="copy" data-copy="$"{price:F2}"">COPY</button></div><p>Format a number with two decimal places.</p></article><article class="card" data-search="strings @"c:\temp\file.txt" verbatim string literal."><div class="cmdrow"><pre><code>@"C:\Temp\file.txt"</code></pre><button class="copy" data-copy="@"C:\Temp\file.txt"">COPY</button></div><p>Verbatim string literal.</p></article><article class="card" data-search="strings """multi-line text""" raw string literal in modern c#."><div class="cmdrow"><pre><code>"""multi-line text"""</code></pre><button class="copy" data-copy=""""multi-line text"""">COPY</button></div><p>Raw string literal in modern C#.</p></article><article class="card" data-search="strings string.isnullorempty(text) check null or empty."><div class="cmdrow"><pre><code>string.IsNullOrEmpty(text)</code></pre><button class="copy" data-copy="string.IsNullOrEmpty(text)">COPY</button></div><p>Check null or empty.</p></article><article class="card" data-search="strings string.isnullorwhitespace(text) check null, empty, or whitespace."><div class="cmdrow"><pre><code>string.IsNullOrWhiteSpace(text)</code></pre><button class="copy" data-copy="string.IsNullOrWhiteSpace(text)">COPY</button></div><p>Check null, empty, or whitespace.</p></article></div></div></section><section class="section" id="arrays"><button class="sectionhead" aria-expanded="true"><span>Arrays</span><small>11 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="arrays int[] nums = { 1, 2, 3 }; create and initialize an array."><div class="cmdrow"><pre><code>int[] nums = { 1, 2, 3 };</code></pre><button class="copy" data-copy="int[] nums = { 1, 2, 3 };">COPY</button></div><p>Create and initialize an array.</p></article><article class="card" data-search="arrays string[] names = new string[5]; create a fixed-size array."><div class="cmdrow"><pre><code>string[] names = new string[5];</code></pre><button class="copy" data-copy="string[] names = new string[5];">COPY</button></div><p>Create a fixed-size array.</p></article><article class="card" data-search="arrays nums[0] get first element."><div class="cmdrow"><pre><code>nums[0]</code></pre><button class="copy" data-copy="nums[0]">COPY</button></div><p>Get first element.</p></article><article class="card" data-search="arrays nums[^1] get last element using index-from-end."><div class="cmdrow"><pre><code>nums[^1]</code></pre><button class="copy" data-copy="nums[^1]">COPY</button></div><p>Get last element using index-from-end.</p></article><article class="card" data-search="arrays nums[1..3] slice with a range."><div class="cmdrow"><pre><code>nums[1..3]</code></pre><button class="copy" data-copy="nums[1..3]">COPY</button></div><p>Slice with a range.</p></article><article class="card" data-search="arrays nums.length get array length."><div class="cmdrow"><pre><code>nums.Length</code></pre><button class="copy" data-copy="nums.Length">COPY</button></div><p>Get array length.</p></article><article class="card" data-search="arrays array.sort(nums); sort in place."><div class="cmdrow"><pre><code>Array.Sort(nums);</code></pre><button class="copy" data-copy="Array.Sort(nums);">COPY</button></div><p>Sort in place.</p></article><article class="card" data-search="arrays array.reverse(nums); reverse in place."><div class="cmdrow"><pre><code>Array.Reverse(nums);</code></pre><button class="copy" data-copy="Array.Reverse(nums);">COPY</button></div><p>Reverse in place.</p></article><article class="card" data-search="arrays array.indexof(nums, 3) find the first index."><div class="cmdrow"><pre><code>Array.IndexOf(nums, 3)</code></pre><button class="copy" data-copy="Array.IndexOf(nums, 3)">COPY</button></div><p>Find the first index.</p></article><article class="card" data-search="arrays array.copy(source, dest, length); copy array contents."><div class="cmdrow"><pre><code>Array.Copy(source, dest, length);</code></pre><button class="copy" data-copy="Array.Copy(source, dest, length);">COPY</button></div><p>Copy array contents.</p></article><article class="card" data-search="arrays array.clear(nums); reset array elements to default values."><div class="cmdrow"><pre><code>Array.Clear(nums);</code></pre><button class="copy" data-copy="Array.Clear(nums);">COPY</button></div><p>Reset array elements to default values.</p></article></div></div></section><section class="section" id="collections---list"><button class="sectionhead" aria-expanded="true"><span>Collections — List</span><small>14 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="collections — list var items = new list<string>(); create a mutable generic list."><div class="cmdrow"><pre><code>var items = new List<string>();</code></pre><button class="copy" data-copy="var items = new List<string>();">COPY</button></div><p>Create a mutable generic list.</p></article><article class="card" data-search="collections — list var items = new list<int> { 1, 2, 3 }; create and initialize a list."><div class="cmdrow"><pre><code>var items = new List<int> { 1, 2, 3 };</code></pre><button class="copy" data-copy="var items = new List<int> { 1, 2, 3 };">COPY</button></div><p>Create and initialize a list.</p></article><article class="card" data-search="collections — list items.add("x"); append an item."><div class="cmdrow"><pre><code>items.Add("x");</code></pre><button class="copy" data-copy="items.Add("x");">COPY</button></div><p>Append an item.</p></article><article class="card" data-search="collections — list items.addrange(other); append multiple items."><div class="cmdrow"><pre><code>items.AddRange(other);</code></pre><button class="copy" data-copy="items.AddRange(other);">COPY</button></div><p>Append multiple items.</p></article><article class="card" data-search="collections — list items.insert(0, "x"); insert at an index."><div class="cmdrow"><pre><code>items.Insert(0, "x");</code></pre><button class="copy" data-copy="items.Insert(0, "x");">COPY</button></div><p>Insert at an index.</p></article><article class="card" data-search="collections — list items[0] read by index."><div class="cmdrow"><pre><code>items[0]</code></pre><button class="copy" data-copy="items[0]">COPY</button></div><p>Read by index.</p></article><article class="card" data-search="collections — list items.remove("x"); remove first matching value."><div class="cmdrow"><pre><code>items.Remove("x");</code></pre><button class="copy" data-copy="items.Remove("x");">COPY</button></div><p>Remove first matching value.</p></article><article class="card" data-search="collections — list items.removeat(0); remove by index."><div class="cmdrow"><pre><code>items.RemoveAt(0);</code></pre><button class="copy" data-copy="items.RemoveAt(0);">COPY</button></div><p>Remove by index.</p></article><article class="card" data-search="collections — list items.contains("x") check membership."><div class="cmdrow"><pre><code>items.Contains("x")</code></pre><button class="copy" data-copy="items.Contains("x")">COPY</button></div><p>Check membership.</p></article><article class="card" data-search="collections — list items.indexof("x") find first index."><div class="cmdrow"><pre><code>items.IndexOf("x")</code></pre><button class="copy" data-copy="items.IndexOf("x")">COPY</button></div><p>Find first index.</p></article><article class="card" data-search="collections — list items.count get list size."><div class="cmdrow"><pre><code>items.Count</code></pre><button class="copy" data-copy="items.Count">COPY</button></div><p>Get list size.</p></article><article class="card" data-search="collections — list items.sort(); sort in place."><div class="cmdrow"><pre><code>items.Sort();</code></pre><button class="copy" data-copy="items.Sort();">COPY</button></div><p>Sort in place.</p></article><article class="card" data-search="collections — list items.reverse(); reverse in place."><div class="cmdrow"><pre><code>items.Reverse();</code></pre><button class="copy" data-copy="items.Reverse();">COPY</button></div><p>Reverse in place.</p></article><article class="card" data-search="collections — list items.clear(); remove all items."><div class="cmdrow"><pre><code>items.Clear();</code></pre><button class="copy" data-copy="items.Clear();">COPY</button></div><p>Remove all items.</p></article></div></div></section><section class="section" id="collections---dictionary"><button class="sectionhead" aria-expanded="true"><span>Collections — Dictionary</span><small>10 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="collections — dictionary var dict = new dictionary<string,int>(); create a dictionary."><div class="cmdrow"><pre><code>var dict = new Dictionary<string,int>();</code></pre><button class="copy" data-copy="var dict = new Dictionary<string,int>();">COPY</button></div><p>Create a dictionary.</p></article><article class="card" data-search="collections — dictionary dict["ada"] = 18; add or update a key."><div class="cmdrow"><pre><code>dict["Ada"] = 18;</code></pre><button class="copy" data-copy="dict["Ada"] = 18;">COPY</button></div><p>Add or update a key.</p></article><article class="card" data-search="collections — dictionary dict["ada"] read by key."><div class="cmdrow"><pre><code>dict["Ada"]</code></pre><button class="copy" data-copy="dict["Ada"]">COPY</button></div><p>Read by key.</p></article><article class="card" data-search="collections — dictionary dict.trygetvalue("ada", out int age) safely read a value."><div class="cmdrow"><pre><code>dict.TryGetValue("Ada", out int age)</code></pre><button class="copy" data-copy="dict.TryGetValue("Ada", out int age)">COPY</button></div><p>Safely read a value.</p></article><article class="card" data-search="collections — dictionary dict.containskey("ada") check key existence."><div class="cmdrow"><pre><code>dict.ContainsKey("Ada")</code></pre><button class="copy" data-copy="dict.ContainsKey("Ada")">COPY</button></div><p>Check key existence.</p></article><article class="card" data-search="collections — dictionary dict.containsvalue(18) check value existence."><div class="cmdrow"><pre><code>dict.ContainsValue(18)</code></pre><button class="copy" data-copy="dict.ContainsValue(18)">COPY</button></div><p>Check value existence.</p></article><article class="card" data-search="collections — dictionary dict.remove("ada"); remove a key."><div class="cmdrow"><pre><code>dict.Remove("Ada");</code></pre><button class="copy" data-copy="dict.Remove("Ada");">COPY</button></div><p>Remove a key.</p></article><article class="card" data-search="collections — dictionary dict.keys get keys."><div class="cmdrow"><pre><code>dict.Keys</code></pre><button class="copy" data-copy="dict.Keys">COPY</button></div><p>Get keys.</p></article><article class="card" data-search="collections — dictionary dict.values get values."><div class="cmdrow"><pre><code>dict.Values</code></pre><button class="copy" data-copy="dict.Values">COPY</button></div><p>Get values.</p></article><article class="card" data-search="collections — dictionary dict.count get entry count."><div class="cmdrow"><pre><code>dict.Count</code></pre><button class="copy" data-copy="dict.Count">COPY</button></div><p>Get entry count.</p></article></div></div></section><section class="section" id="collections---set--queue--stack"><button class="sectionhead" aria-expanded="true"><span>Collections — Set, Queue, Stack</span><small>14 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="collections — set, queue, stack var set = new hashset<int>(); create a hash set."><div class="cmdrow"><pre><code>var set = new HashSet<int>();</code></pre><button class="copy" data-copy="var set = new HashSet<int>();">COPY</button></div><p>Create a hash set.</p></article><article class="card" data-search="collections — set, queue, stack set.add(1); add a unique value."><div class="cmdrow"><pre><code>set.Add(1);</code></pre><button class="copy" data-copy="set.Add(1);">COPY</button></div><p>Add a unique value.</p></article><article class="card" data-search="collections — set, queue, stack set.contains(1) check set membership."><div class="cmdrow"><pre><code>set.Contains(1)</code></pre><button class="copy" data-copy="set.Contains(1)">COPY</button></div><p>Check set membership.</p></article><article class="card" data-search="collections — set, queue, stack set.remove(1); remove a set value."><div class="cmdrow"><pre><code>set.Remove(1);</code></pre><button class="copy" data-copy="set.Remove(1);">COPY</button></div><p>Remove a set value.</p></article><article class="card" data-search="collections — set, queue, stack set.unionwith(other); union with another set."><div class="cmdrow"><pre><code>set.UnionWith(other);</code></pre><button class="copy" data-copy="set.UnionWith(other);">COPY</button></div><p>Union with another set.</p></article><article class="card" data-search="collections — set, queue, stack set.intersectwith(other); intersect with another set."><div class="cmdrow"><pre><code>set.IntersectWith(other);</code></pre><button class="copy" data-copy="set.IntersectWith(other);">COPY</button></div><p>Intersect with another set.</p></article><article class="card" data-search="collections — set, queue, stack var queue = new queue<string>(); create a queue."><div class="cmdrow"><pre><code>var queue = new Queue<string>();</code></pre><button class="copy" data-copy="var queue = new Queue<string>();">COPY</button></div><p>Create a queue.</p></article><article class="card" data-search="collections — set, queue, stack queue.enqueue("x"); add to queue."><div class="cmdrow"><pre><code>queue.Enqueue("x");</code></pre><button class="copy" data-copy="queue.Enqueue("x");">COPY</button></div><p>Add to queue.</p></article><article class="card" data-search="collections — set, queue, stack queue.dequeue() remove and return front item."><div class="cmdrow"><pre><code>queue.Dequeue()</code></pre><button class="copy" data-copy="queue.Dequeue()">COPY</button></div><p>Remove and return front item.</p></article><article class="card" data-search="collections — set, queue, stack queue.peek() read front item."><div class="cmdrow"><pre><code>queue.Peek()</code></pre><button class="copy" data-copy="queue.Peek()">COPY</button></div><p>Read front item.</p></article><article class="card" data-search="collections — set, queue, stack var stack = new stack<string>(); create a stack."><div class="cmdrow"><pre><code>var stack = new Stack<string>();</code></pre><button class="copy" data-copy="var stack = new Stack<string>();">COPY</button></div><p>Create a stack.</p></article><article class="card" data-search="collections — set, queue, stack stack.push("x"); push an item."><div class="cmdrow"><pre><code>stack.Push("x");</code></pre><button class="copy" data-copy="stack.Push("x");">COPY</button></div><p>Push an item.</p></article><article class="card" data-search="collections — set, queue, stack stack.pop() pop an item."><div class="cmdrow"><pre><code>stack.Pop()</code></pre><button class="copy" data-copy="stack.Pop()">COPY</button></div><p>Pop an item.</p></article><article class="card" data-search="collections — set, queue, stack stack.peek() read top item."><div class="cmdrow"><pre><code>stack.Peek()</code></pre><button class="copy" data-copy="stack.Peek()">COPY</button></div><p>Read top item.</p></article></div></div></section><section class="section" id="conditionals"><button class="sectionhead" aria-expanded="true"><span>Conditionals</span><small>9 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="conditionals if (x > 0) { } basic if statement."><div class="cmdrow"><pre><code>if (x > 0) { }</code></pre><button class="copy" data-copy="if (x > 0) { }">COPY</button></div><p>Basic if statement.</p></article><article class="card" data-search="conditionals if (x > 0) { } else { } if/else."><div class="cmdrow"><pre><code>if (x > 0) { } else { }</code></pre><button class="copy" data-copy="if (x > 0) { } else { }">COPY</button></div><p>if/else.</p></article><article class="card" data-search="conditionals if (x > 0) { } else if (x == 0) { } else { } if/else-if/else."><div class="cmdrow"><pre><code>if (x > 0) { } else if (x == 0) { } else { }</code></pre><button class="copy" data-copy="if (x > 0) { } else if (x == 0) { } else { }">COPY</button></div><p>if/else-if/else.</p></article><article class="card" data-search="conditionals string status = age >= 18 ? "adult" : "minor"; ternary expression."><div class="cmdrow"><pre><code>string status = age >= 18 ? "adult" : "minor";</code></pre><button class="copy" data-copy="string status = age >= 18 ? "adult" : "minor";">COPY</button></div><p>Ternary expression.</p></article><article class="card" data-search="conditionals switch (value) { case 1: break; default: break; } classic switch."><div class="cmdrow"><pre><code>switch (value) { case 1: break; default: break; }</code></pre><button class="copy" data-copy="switch (value) { case 1: break; default: break; }">COPY</button></div><p>Classic switch.</p></article><article class="card" data-search="conditionals var result = value switch { 1 => "one", _ => "other" }; switch expression."><div class="cmdrow"><pre><code>var result = value switch { 1 => "one", _ => "other" };</code></pre><button class="copy" data-copy="var result = value switch { 1 => "one", _ => "other" };">COPY</button></div><p>Switch expression.</p></article><article class="card" data-search="conditionals if (value is null) { } check for null."><div class="cmdrow"><pre><code>if (value is null) { }</code></pre><button class="copy" data-copy="if (value is null) { }">COPY</button></div><p>Check for null.</p></article><article class="card" data-search="conditionals if (value is not null) { } check for non-null."><div class="cmdrow"><pre><code>if (value is not null) { }</code></pre><button class="copy" data-copy="if (value is not null) { }">COPY</button></div><p>Check for non-null.</p></article><article class="card" data-search="conditionals if (obj is string s) { console.writeline(s.length); } pattern-match type and bind variable."><div class="cmdrow"><pre><code>if (obj is string s) { Console.WriteLine(s.Length); }</code></pre><button class="copy" data-copy="if (obj is string s) { Console.WriteLine(s.Length); }">COPY</button></div><p>Pattern-match type and bind variable.</p></article></div></div></section><section class="section" id="loops"><button class="sectionhead" aria-expanded="true"><span>Loops</span><small>6 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="loops for (int i = 0; i < 10; i++) { } classic for loop."><div class="cmdrow"><pre><code>for (int i = 0; i < 10; i++) { }</code></pre><button class="copy" data-copy="for (int i = 0; i < 10; i++) { }">COPY</button></div><p>Classic for loop.</p></article><article class="card" data-search="loops foreach (var item in items) { } loop over a collection."><div class="cmdrow"><pre><code>foreach (var item in items) { }</code></pre><button class="copy" data-copy="foreach (var item in items) { }">COPY</button></div><p>Loop over a collection.</p></article><article class="card" data-search="loops while (condition) { } repeat while condition is true."><div class="cmdrow"><pre><code>while (condition) { }</code></pre><button class="copy" data-copy="while (condition) { }">COPY</button></div><p>Repeat while condition is true.</p></article><article class="card" data-search="loops do { } while (condition); run at least once."><div class="cmdrow"><pre><code>do { } while (condition);</code></pre><button class="copy" data-copy="do { } while (condition);">COPY</button></div><p>Run at least once.</p></article><article class="card" data-search="loops break; exit nearest loop or switch."><div class="cmdrow"><pre><code>break;</code></pre><button class="copy" data-copy="break;">COPY</button></div><p>Exit nearest loop or switch.</p></article><article class="card" data-search="loops continue; skip to next iteration."><div class="cmdrow"><pre><code>continue;</code></pre><button class="copy" data-copy="continue;">COPY</button></div><p>Skip to next iteration.</p></article></div></div></section><section class="section" id="methods"><button class="sectionhead" aria-expanded="true"><span>Methods</span><small>8 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="methods static int add(int a, int b) => a + b; expression-bodied method."><div class="cmdrow"><pre><code>static int Add(int a, int b) => a + b;</code></pre><button class="copy" data-copy="static int Add(int a, int b) => a + b;">COPY</button></div><p>Expression-bodied method.</p></article><article class="card" data-search="methods static int add(int a, int b) { return a + b; } block-bodied method."><div class="cmdrow"><pre><code>static int Add(int a, int b) { return a + b; }</code></pre><button class="copy" data-copy="static int Add(int a, int b) { return a + b; }">COPY</button></div><p>Block-bodied method.</p></article><article class="card" data-search="methods void log(string message = "default") { } method with default parameter."><div class="cmdrow"><pre><code>void Log(string message = "default") { }</code></pre><button class="copy" data-copy="void Log(string message = "default") { }">COPY</button></div><p>Method with default parameter.</p></article><article class="card" data-search="methods void print(params string[] values) { } variable-length parameter list."><div class="cmdrow"><pre><code>void Print(params string[] values) { }</code></pre><button class="copy" data-copy="void Print(params string[] values) { }">COPY</button></div><p>Variable-length parameter list.</p></article><article class="card" data-search="methods void update(ref int x) { x++; } pass by reference."><div class="cmdrow"><pre><code>void Update(ref int x) { x++; }</code></pre><button class="copy" data-copy="void Update(ref int x) { x++; }">COPY</button></div><p>Pass by reference.</p></article><article class="card" data-search="methods void getvalue(out int x) { x = 42; } output parameter."><div class="cmdrow"><pre><code>void GetValue(out int x) { x = 42; }</code></pre><button class="copy" data-copy="void GetValue(out int x) { x = 42; }">COPY</button></div><p>Output parameter.</p></article><article class="card" data-search="methods void read(in int x) { } read-only reference parameter."><div class="cmdrow"><pre><code>void Read(in int x) { }</code></pre><button class="copy" data-copy="void Read(in int x) { }">COPY</button></div><p>Read-only reference parameter.</p></article><article class="card" data-search="methods return value; return a value."><div class="cmdrow"><pre><code>return value;</code></pre><button class="copy" data-copy="return value;">COPY</button></div><p>Return a value.</p></article></div></div></section><section class="section" id="classes---objects"><button class="sectionhead" aria-expanded="true"><span>Classes & Objects</span><small>10 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="classes & objects class user { } define a class."><div class="cmdrow"><pre><code>class User { }</code></pre><button class="copy" data-copy="class User { }">COPY</button></div><p>Define a class.</p></article><article class="card" data-search="classes & objects var u = new user(); create an object."><div class="cmdrow"><pre><code>var u = new User();</code></pre><button class="copy" data-copy="var u = new User();">COPY</button></div><p>Create an object.</p></article><article class="card" data-search="classes & objects class user { public string name; } define a field."><div class="cmdrow"><pre><code>class User { public string Name; }</code></pre><button class="copy" data-copy="class User { public string Name; }">COPY</button></div><p>Define a field.</p></article><article class="card" data-search="classes & objects u.name = "ada"; assign a field."><div class="cmdrow"><pre><code>u.Name = "Ada";</code></pre><button class="copy" data-copy="u.Name = "Ada";">COPY</button></div><p>Assign a field.</p></article><article class="card" data-search="classes & objects class user { public user(string name) { name = name; } } define a constructor."><div class="cmdrow"><pre><code>class User { public User(string name) { Name = name; } }</code></pre><button class="copy" data-copy="class User { public User(string name) { Name = name; } }">COPY</button></div><p>Define a constructor.</p></article><article class="card" data-search="classes & objects this.name = name; refer to current instance member."><div class="cmdrow"><pre><code>this.Name = name;</code></pre><button class="copy" data-copy="this.Name = name;">COPY</button></div><p>Refer to current instance member.</p></article><article class="card" data-search="classes & objects public string name { get; set; } auto-implemented property."><div class="cmdrow"><pre><code>public string Name { get; set; }</code></pre><button class="copy" data-copy="public string Name { get; set; }">COPY</button></div><p>Auto-implemented property.</p></article><article class="card" data-search="classes & objects public string name { get; init; } init-only property."><div class="cmdrow"><pre><code>public string Name { get; init; }</code></pre><button class="copy" data-copy="public string Name { get; init; }">COPY</button></div><p>Init-only property.</p></article><article class="card" data-search="classes & objects public string name => _name; expression-bodied read-only property."><div class="cmdrow"><pre><code>public string Name => _name;</code></pre><button class="copy" data-copy="public string Name => _name;">COPY</button></div><p>Expression-bodied read-only property.</p></article><article class="card" data-search="classes & objects public override string tostring() => name; override string representation."><div class="cmdrow"><pre><code>public override string ToString() => Name;</code></pre><button class="copy" data-copy="public override string ToString() => Name;">COPY</button></div><p>Override string representation.</p></article></div></div></section><section class="section" id="inheritance---interfaces"><button class="sectionhead" aria-expanded="true"><span>Inheritance & Interfaces</span><small>8 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="inheritance & interfaces class admin : user { } create a subclass."><div class="cmdrow"><pre><code>class Admin : User { }</code></pre><button class="copy" data-copy="class Admin : User { }">COPY</button></div><p>Create a subclass.</p></article><article class="card" data-search="inheritance & interfaces public admin(string name) : base(name) { } call base constructor."><div class="cmdrow"><pre><code>public Admin(string name) : base(name) { }</code></pre><button class="copy" data-copy="public Admin(string name) : base(name) { }">COPY</button></div><p>Call base constructor.</p></article><article class="card" data-search="inheritance & interfaces interface iprintable { void print(); } define an interface."><div class="cmdrow"><pre><code>interface IPrintable { void Print(); }</code></pre><button class="copy" data-copy="interface IPrintable { void Print(); }">COPY</button></div><p>Define an interface.</p></article><article class="card" data-search="inheritance & interfaces class report : iprintable { public void print() { } } implement an interface."><div class="cmdrow"><pre><code>class Report : IPrintable { public void Print() { } }</code></pre><button class="copy" data-copy="class Report : IPrintable { public void Print() { } }">COPY</button></div><p>Implement an interface.</p></article><article class="card" data-search="inheritance & interfaces abstract class shape { public abstract double area(); } define an abstract class."><div class="cmdrow"><pre><code>abstract class Shape { public abstract double Area(); }</code></pre><button class="copy" data-copy="abstract class Shape { public abstract double Area(); }">COPY</button></div><p>Define an abstract class.</p></article><article class="card" data-search="inheritance & interfaces sealed class finaltype { } prevent inheritance."><div class="cmdrow"><pre><code>sealed class FinalType { }</code></pre><button class="copy" data-copy="sealed class FinalType { }">COPY</button></div><p>Prevent inheritance.</p></article><article class="card" data-search="inheritance & interfaces public virtual void run() { } allow overriding."><div class="cmdrow"><pre><code>public virtual void Run() { }</code></pre><button class="copy" data-copy="public virtual void Run() { }">COPY</button></div><p>Allow overriding.</p></article><article class="card" data-search="inheritance & interfaces public override void run() { } override a virtual member."><div class="cmdrow"><pre><code>public override void Run() { }</code></pre><button class="copy" data-copy="public override void Run() { }">COPY</button></div><p>Override a virtual member.</p></article></div></div></section><section class="section" id="records"><button class="sectionhead" aria-expanded="true"><span>Records</span><small>4 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="records public record user(string name, int age); define an immutable-style data record."><div class="cmdrow"><pre><code>public record User(string Name, int Age);</code></pre><button class="copy" data-copy="public record User(string Name, int Age);">COPY</button></div><p>Define an immutable-style data record.</p></article><article class="card" data-search="records var u = new user("ada", 18); create a record instance."><div class="cmdrow"><pre><code>var u = new User("Ada", 18);</code></pre><button class="copy" data-copy="var u = new User("Ada", 18);">COPY</button></div><p>Create a record instance.</p></article><article class="card" data-search="records var older = u with { age = 19 }; create a modified record copy."><div class="cmdrow"><pre><code>var older = u with { Age = 19 };</code></pre><button class="copy" data-copy="var older = u with { Age = 19 };">COPY</button></div><p>Create a modified record copy.</p></article><article class="card" data-search="records record struct point(int x, int y); define a record struct."><div class="cmdrow"><pre><code>record struct Point(int X, int Y);</code></pre><button class="copy" data-copy="record struct Point(int X, int Y);">COPY</button></div><p>Define a record struct.</p></article></div></div></section><section class="section" id="structs---enums"><button class="sectionhead" aria-expanded="true"><span>Structs & Enums</span><small>6 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="structs & enums struct point { public int x; public int y; } define a value-type struct."><div class="cmdrow"><pre><code>struct Point { public int X; public int Y; }</code></pre><button class="copy" data-copy="struct Point { public int X; public int Y; }">COPY</button></div><p>Define a value-type struct.</p></article><article class="card" data-search="structs & enums enum day { monday, tuesday, wednesday } define an enum."><div class="cmdrow"><pre><code>enum Day { Monday, Tuesday, Wednesday }</code></pre><button class="copy" data-copy="enum Day { Monday, Tuesday, Wednesday }">COPY</button></div><p>Define an enum.</p></article><article class="card" data-search="structs & enums day today = day.monday; use an enum value."><div class="cmdrow"><pre><code>Day today = Day.Monday;</code></pre><button class="copy" data-copy="Day today = Day.Monday;">COPY</button></div><p>Use an enum value.</p></article><article class="card" data-search="structs & enums enum.parse<day>("monday") parse enum from text."><div class="cmdrow"><pre><code>Enum.Parse<Day>("Monday")</code></pre><button class="copy" data-copy="Enum.Parse<Day>("Monday")">COPY</button></div><p>Parse enum from text.</p></article><article class="card" data-search="structs & enums enum.tryparse<day>("monday", out var day) safely parse enum."><div class="cmdrow"><pre><code>Enum.TryParse<Day>("Monday", out var day)</code></pre><button class="copy" data-copy="Enum.TryParse<Day>("Monday", out var day)">COPY</button></div><p>Safely parse enum.</p></article><article class="card" data-search="structs & enums enum.getvalues<day>() get all enum values."><div class="cmdrow"><pre><code>Enum.GetValues<Day>()</code></pre><button class="copy" data-copy="Enum.GetValues<Day>()">COPY</button></div><p>Get all enum values.</p></article></div></div></section><section class="section" id="generics"><button class="sectionhead" aria-expanded="true"><span>Generics</span><small>7 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="generics class box<t> { public t value { get; set; } } define a generic class."><div class="cmdrow"><pre><code>class Box<T> { public T Value { get; set; } }</code></pre><button class="copy" data-copy="class Box<T> { public T Value { get; set; } }">COPY</button></div><p>Define a generic class.</p></article><article class="card" data-search="generics var box = new box<int>(); instantiate a generic type."><div class="cmdrow"><pre><code>var box = new Box<int>();</code></pre><button class="copy" data-copy="var box = new Box<int>();">COPY</button></div><p>Instantiate a generic type.</p></article><article class="card" data-search="generics static t identity<t>(t value) => value; generic method."><div class="cmdrow"><pre><code>static T Identity<T>(T value) => value;</code></pre><button class="copy" data-copy="static T Identity<T>(T value) => value;">COPY</button></div><p>Generic method.</p></article><article class="card" data-search="generics where t : class constrain type parameter to reference type."><div class="cmdrow"><pre><code>where T : class</code></pre><button class="copy" data-copy="where T : class">COPY</button></div><p>Constrain type parameter to reference type.</p></article><article class="card" data-search="generics where t : struct constrain to non-nullable value type."><div class="cmdrow"><pre><code>where T : struct</code></pre><button class="copy" data-copy="where T : struct">COPY</button></div><p>Constrain to non-nullable value type.</p></article><article class="card" data-search="generics where t : new() require public parameterless constructor."><div class="cmdrow"><pre><code>where T : new()</code></pre><button class="copy" data-copy="where T : new()">COPY</button></div><p>Require public parameterless constructor.</p></article><article class="card" data-search="generics where t : icomparable<t> constrain to an interface."><div class="cmdrow"><pre><code>where T : IComparable<T></code></pre><button class="copy" data-copy="where T : IComparable<T>">COPY</button></div><p>Constrain to an interface.</p></article></div></div></section><section class="section" id="delegates---lambdas"><button class="sectionhead" aria-expanded="true"><span>Delegates & Lambdas</span><small>7 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="delegates & lambdas func<int,int> doubleit = x => x * 2; function delegate with return value."><div class="cmdrow"><pre><code>Func<int,int> doubleIt = x => x * 2;</code></pre><button class="copy" data-copy="Func<int,int> doubleIt = x => x * 2;">COPY</button></div><p>Function delegate with return value.</p></article><article class="card" data-search="delegates & lambdas action<string> log = s => console.writeline(s); delegate returning void."><div class="cmdrow"><pre><code>Action<string> log = s => Console.WriteLine(s);</code></pre><button class="copy" data-copy="Action<string> log = s => Console.WriteLine(s);">COPY</button></div><p>Delegate returning void.</p></article><article class="card" data-search="delegates & lambdas predicate<int> positive = x => x > 0; predicate delegate."><div class="cmdrow"><pre><code>Predicate<int> positive = x => x > 0;</code></pre><button class="copy" data-copy="Predicate<int> positive = x => x > 0;">COPY</button></div><p>Predicate delegate.</p></article><article class="card" data-search="delegates & lambdas x => x * 2 single-parameter lambda."><div class="cmdrow"><pre><code>x => x * 2</code></pre><button class="copy" data-copy="x => x * 2">COPY</button></div><p>Single-parameter lambda.</p></article><article class="card" data-search="delegates & lambdas (a, b) => a + b multi-parameter lambda."><div class="cmdrow"><pre><code>(a, b) => a + b</code></pre><button class="copy" data-copy="(a, b) => a + b">COPY</button></div><p>Multi-parameter lambda.</p></article><article class="card" data-search="delegates & lambdas () => console.writeline("hi") no-argument lambda."><div class="cmdrow"><pre><code>() => Console.WriteLine("Hi")</code></pre><button class="copy" data-copy="() => Console.WriteLine("Hi")">COPY</button></div><p>No-argument lambda.</p></article><article class="card" data-search="delegates & lambdas func<int,int> square = x => x * x; store a lambda in a delegate."><div class="cmdrow"><pre><code>Func<int,int> square = x => x * x;</code></pre><button class="copy" data-copy="Func<int,int> square = x => x * x;">COPY</button></div><p>Store a lambda in a delegate.</p></article></div></div></section><section class="section" id="events"><button class="sectionhead" aria-expanded="true"><span>Events</span><small>5 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="events public event eventhandler? changed; declare an event."><div class="cmdrow"><pre><code>public event EventHandler? Changed;</code></pre><button class="copy" data-copy="public event EventHandler? Changed;">COPY</button></div><p>Declare an event.</p></article><article class="card" data-search="events changed?.invoke(this, eventargs.empty); raise an event."><div class="cmdrow"><pre><code>Changed?.Invoke(this, EventArgs.Empty);</code></pre><button class="copy" data-copy="Changed?.Invoke(this, EventArgs.Empty);">COPY</button></div><p>Raise an event.</p></article><article class="card" data-search="events obj.changed += handler; subscribe to an event."><div class="cmdrow"><pre><code>obj.Changed += Handler;</code></pre><button class="copy" data-copy="obj.Changed += Handler;">COPY</button></div><p>Subscribe to an event.</p></article><article class="card" data-search="events obj.changed -= handler; unsubscribe from an event."><div class="cmdrow"><pre><code>obj.Changed -= Handler;</code></pre><button class="copy" data-copy="obj.Changed -= Handler;">COPY</button></div><p>Unsubscribe from an event.</p></article><article class="card" data-search="events void handler(object? sender, eventargs e) { } basic event handler."><div class="cmdrow"><pre><code>void Handler(object? sender, EventArgs e) { }</code></pre><button class="copy" data-copy="void Handler(object? sender, EventArgs e) { }">COPY</button></div><p>Basic event handler.</p></article></div></div></section><section class="section" id="linq-basics"><button class="sectionhead" aria-expanded="true"><span>LINQ Basics</span><small>21 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="linq basics items.where(x => x > 0) filter a sequence."><div class="cmdrow"><pre><code>items.Where(x => x > 0)</code></pre><button class="copy" data-copy="items.Where(x => x > 0)">COPY</button></div><p>Filter a sequence.</p></article><article class="card" data-search="linq basics items.select(x => x * 2) transform a sequence."><div class="cmdrow"><pre><code>items.Select(x => x * 2)</code></pre><button class="copy" data-copy="items.Select(x => x * 2)">COPY</button></div><p>Transform a sequence.</p></article><article class="card" data-search="linq basics items.orderby(x => x) sort ascending."><div class="cmdrow"><pre><code>items.OrderBy(x => x)</code></pre><button class="copy" data-copy="items.OrderBy(x => x)">COPY</button></div><p>Sort ascending.</p></article><article class="card" data-search="linq basics items.orderbydescending(x => x) sort descending."><div class="cmdrow"><pre><code>items.OrderByDescending(x => x)</code></pre><button class="copy" data-copy="items.OrderByDescending(x => x)">COPY</button></div><p>Sort descending.</p></article><article class="card" data-search="linq basics items.thenby(x => x.name) secondary sort."><div class="cmdrow"><pre><code>items.ThenBy(x => x.Name)</code></pre><button class="copy" data-copy="items.ThenBy(x => x.Name)">COPY</button></div><p>Secondary sort.</p></article><article class="card" data-search="linq basics items.distinct() remove duplicates."><div class="cmdrow"><pre><code>items.Distinct()</code></pre><button class="copy" data-copy="items.Distinct()">COPY</button></div><p>Remove duplicates.</p></article><article class="card" data-search="linq basics items.skip(10) skip initial elements."><div class="cmdrow"><pre><code>items.Skip(10)</code></pre><button class="copy" data-copy="items.Skip(10)">COPY</button></div><p>Skip initial elements.</p></article><article class="card" data-search="linq basics items.take(10) take first elements."><div class="cmdrow"><pre><code>items.Take(10)</code></pre><button class="copy" data-copy="items.Take(10)">COPY</button></div><p>Take first elements.</p></article><article class="card" data-search="linq basics items.first() get first item; throws if empty."><div class="cmdrow"><pre><code>items.First()</code></pre><button class="copy" data-copy="items.First()">COPY</button></div><p>Get first item; throws if empty.</p></article><article class="card" data-search="linq basics items.firstordefault() get first item or default."><div class="cmdrow"><pre><code>items.FirstOrDefault()</code></pre><button class="copy" data-copy="items.FirstOrDefault()">COPY</button></div><p>Get first item or default.</p></article><article class="card" data-search="linq basics items.single() require exactly one item."><div class="cmdrow"><pre><code>items.Single()</code></pre><button class="copy" data-copy="items.Single()">COPY</button></div><p>Require exactly one item.</p></article><article class="card" data-search="linq basics items.singleordefault() require zero or one item."><div class="cmdrow"><pre><code>items.SingleOrDefault()</code></pre><button class="copy" data-copy="items.SingleOrDefault()">COPY</button></div><p>Require zero or one item.</p></article><article class="card" data-search="linq basics items.any() check whether sequence has any elements."><div class="cmdrow"><pre><code>items.Any()</code></pre><button class="copy" data-copy="items.Any()">COPY</button></div><p>Check whether sequence has any elements.</p></article><article class="card" data-search="linq basics items.any(x => x.active) check whether any item matches."><div class="cmdrow"><pre><code>items.Any(x => x.Active)</code></pre><button class="copy" data-copy="items.Any(x => x.Active)">COPY</button></div><p>Check whether any item matches.</p></article><article class="card" data-search="linq basics items.all(x => x.active) check whether all items match."><div class="cmdrow"><pre><code>items.All(x => x.Active)</code></pre><button class="copy" data-copy="items.All(x => x.Active)">COPY</button></div><p>Check whether all items match.</p></article><article class="card" data-search="linq basics items.contains(value) membership test."><div class="cmdrow"><pre><code>items.Contains(value)</code></pre><button class="copy" data-copy="items.Contains(value)">COPY</button></div><p>Membership test.</p></article><article class="card" data-search="linq basics items.count() count elements."><div class="cmdrow"><pre><code>items.Count()</code></pre><button class="copy" data-copy="items.Count()">COPY</button></div><p>Count elements.</p></article><article class="card" data-search="linq basics items.sum() sum numeric elements."><div class="cmdrow"><pre><code>items.Sum()</code></pre><button class="copy" data-copy="items.Sum()">COPY</button></div><p>Sum numeric elements.</p></article><article class="card" data-search="linq basics items.average() average numeric elements."><div class="cmdrow"><pre><code>items.Average()</code></pre><button class="copy" data-copy="items.Average()">COPY</button></div><p>Average numeric elements.</p></article><article class="card" data-search="linq basics items.min() minimum."><div class="cmdrow"><pre><code>items.Min()</code></pre><button class="copy" data-copy="items.Min()">COPY</button></div><p>Minimum.</p></article><article class="card" data-search="linq basics items.max() maximum."><div class="cmdrow"><pre><code>items.Max()</code></pre><button class="copy" data-copy="items.Max()">COPY</button></div><p>Maximum.</p></article></div></div></section><section class="section" id="linq-advanced"><button class="sectionhead" aria-expanded="true"><span>LINQ Advanced</span><small>10 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="linq advanced items.groupby(x => x.category) group by key."><div class="cmdrow"><pre><code>items.GroupBy(x => x.Category)</code></pre><button class="copy" data-copy="items.GroupBy(x => x.Category)">COPY</button></div><p>Group by key.</p></article><article class="card" data-search="linq advanced items.todictionary(x => x.id) build a dictionary."><div class="cmdrow"><pre><code>items.ToDictionary(x => x.Id)</code></pre><button class="copy" data-copy="items.ToDictionary(x => x.Id)">COPY</button></div><p>Build a dictionary.</p></article><article class="card" data-search="linq advanced items.tolookup(x => x.category) build a one-to-many lookup."><div class="cmdrow"><pre><code>items.ToLookup(x => x.Category)</code></pre><button class="copy" data-copy="items.ToLookup(x => x.Category)">COPY</button></div><p>Build a one-to-many lookup.</p></article><article class="card" data-search="linq advanced items.selectmany(x => x.children) flatten nested sequences."><div class="cmdrow"><pre><code>items.SelectMany(x => x.Children)</code></pre><button class="copy" data-copy="items.SelectMany(x => x.Children)">COPY</button></div><p>Flatten nested sequences.</p></article><article class="card" data-search="linq advanced items.aggregate((a, b) => a + b) reduce sequence to one value."><div class="cmdrow"><pre><code>items.Aggregate((a, b) => a + b)</code></pre><button class="copy" data-copy="items.Aggregate((a, b) => a + b)">COPY</button></div><p>Reduce sequence to one value.</p></article><article class="card" data-search="linq advanced items.zip(other, (a,b) => (a,b)) pair two sequences."><div class="cmdrow"><pre><code>items.Zip(other, (a,b) => (a,b))</code></pre><button class="copy" data-copy="items.Zip(other, (a,b) => (a,b))">COPY</button></div><p>Pair two sequences.</p></article><article class="card" data-search="linq advanced items.chunk(100) split sequence into fixed-size chunks on modern .net."><div class="cmdrow"><pre><code>items.Chunk(100)</code></pre><button class="copy" data-copy="items.Chunk(100)">COPY</button></div><p>Split sequence into fixed-size chunks on modern .NET.</p></article><article class="card" data-search="linq advanced items.distinctby(x => x.id) remove duplicates by key on modern .net."><div class="cmdrow"><pre><code>items.DistinctBy(x => x.Id)</code></pre><button class="copy" data-copy="items.DistinctBy(x => x.Id)">COPY</button></div><p>Remove duplicates by key on modern .NET.</p></article><article class="card" data-search="linq advanced items.maxby(x => x.score) get element with maximum key."><div class="cmdrow"><pre><code>items.MaxBy(x => x.Score)</code></pre><button class="copy" data-copy="items.MaxBy(x => x.Score)">COPY</button></div><p>Get element with maximum key.</p></article><article class="card" data-search="linq advanced items.minby(x => x.score) get element with minimum key."><div class="cmdrow"><pre><code>items.MinBy(x => x.Score)</code></pre><button class="copy" data-copy="items.MinBy(x => x.Score)">COPY</button></div><p>Get element with minimum key.</p></article></div></div></section><section class="section" id="query-syntax-linq"><button class="sectionhead" aria-expanded="true"><span>Query Syntax LINQ</span><small>4 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="query syntax linq var q = from x in items where x > 0 select x; linq query syntax."><div class="cmdrow"><pre><code>var q = from x in items where x > 0 select x;</code></pre><button class="copy" data-copy="var q = from x in items where x > 0 select x;">COPY</button></div><p>LINQ query syntax.</p></article><article class="card" data-search="query syntax linq var q = from u in users orderby u.name select u; query syntax with ordering."><div class="cmdrow"><pre><code>var q = from u in users orderby u.Name select u;</code></pre><button class="copy" data-copy="var q = from u in users orderby u.Name select u;">COPY</button></div><p>Query syntax with ordering.</p></article><article class="card" data-search="query syntax linq var q = from u in users group u by u.department; query syntax grouping."><div class="cmdrow"><pre><code>var q = from u in users group u by u.Department;</code></pre><button class="copy" data-copy="var q = from u in users group u by u.Department;">COPY</button></div><p>Query syntax grouping.</p></article><article class="card" data-search="query syntax linq var q = from u in users join o in orders on u.id equals o.userid select new { u, o }; query syntax join."><div class="cmdrow"><pre><code>var q = from u in users join o in orders on u.Id equals o.UserId select new { u, o };</code></pre><button class="copy" data-copy="var q = from u in users join o in orders on u.Id equals o.UserId select new { u, o };">COPY</button></div><p>Query syntax join.</p></article></div></div></section><section class="section" id="null-handling"><button class="sectionhead" aria-expanded="true"><span>Null Handling</span><small>6 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="null handling value?.property null-conditional member access."><div class="cmdrow"><pre><code>value?.Property</code></pre><button class="copy" data-copy="value?.Property">COPY</button></div><p>Null-conditional member access.</p></article><article class="card" data-search="null handling array?[0] null-conditional index access."><div class="cmdrow"><pre><code>array?[0]</code></pre><button class="copy" data-copy="array?[0]">COPY</button></div><p>Null-conditional index access.</p></article><article class="card" data-search="null handling value ?? fallback use fallback for null."><div class="cmdrow"><pre><code>value ?? fallback</code></pre><button class="copy" data-copy="value ?? fallback">COPY</button></div><p>Use fallback for null.</p></article><article class="card" data-search="null handling value ??= fallback; assign fallback if null."><div class="cmdrow"><pre><code>value ??= fallback;</code></pre><button class="copy" data-copy="value ??= fallback;">COPY</button></div><p>Assign fallback if null.</p></article><article class="card" data-search="null handling value!.length null-forgiving operator; suppresses nullable warning."><div class="cmdrow"><pre><code>value!.Length</code></pre><button class="copy" data-copy="value!.Length">COPY</button></div><p>Null-forgiving operator; suppresses nullable warning.</p></article><article class="card" data-search="null handling string? text = null; nullable reference variable."><div class="cmdrow"><pre><code>string? text = null;</code></pre><button class="copy" data-copy="string? text = null;">COPY</button></div><p>Nullable reference variable.</p></article></div></div></section><section class="section" id="exceptions"><button class="sectionhead" aria-expanded="true"><span>Exceptions</span><small>8 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="exceptions try { risky(); } catch (ioexception ex) { } catch a specific exception."><div class="cmdrow"><pre><code>try { Risky(); } catch (IOException ex) { }</code></pre><button class="copy" data-copy="try { Risky(); } catch (IOException ex) { }">COPY</button></div><p>Catch a specific exception.</p></article><article class="card" data-search="exceptions try { } catch (exception ex) { } catch general exceptions."><div class="cmdrow"><pre><code>try { } catch (Exception ex) { }</code></pre><button class="copy" data-copy="try { } catch (Exception ex) { }">COPY</button></div><p>Catch general exceptions.</p></article><article class="card" data-search="exceptions try { } finally { cleanup(); } always run cleanup."><div class="cmdrow"><pre><code>try { } finally { Cleanup(); }</code></pre><button class="copy" data-copy="try { } finally { Cleanup(); }">COPY</button></div><p>Always run cleanup.</p></article><article class="card" data-search="exceptions throw new invalidoperationexception("bad state"); throw an exception."><div class="cmdrow"><pre><code>throw new InvalidOperationException("Bad state");</code></pre><button class="copy" data-copy="throw new InvalidOperationException("Bad state");">COPY</button></div><p>Throw an exception.</p></article><article class="card" data-search="exceptions throw; re-throw current exception preserving stack."><div class="cmdrow"><pre><code>throw;</code></pre><button class="copy" data-copy="throw;">COPY</button></div><p>Re-throw current exception preserving stack.</p></article><article class="card" data-search="exceptions ex.message read exception message."><div class="cmdrow"><pre><code>ex.Message</code></pre><button class="copy" data-copy="ex.Message">COPY</button></div><p>Read exception message.</p></article><article class="card" data-search="exceptions ex.stacktrace read stack trace."><div class="cmdrow"><pre><code>ex.StackTrace</code></pre><button class="copy" data-copy="ex.StackTrace">COPY</button></div><p>Read stack trace.</p></article><article class="card" data-search="exceptions class appexception : exception { } create a custom exception."><div class="cmdrow"><pre><code>class AppException : Exception { }</code></pre><button class="copy" data-copy="class AppException : Exception { }">COPY</button></div><p>Create a custom exception.</p></article></div></div></section><section class="section" id="files---directories"><button class="sectionhead" aria-expanded="true"><span>Files & Directories</span><small>17 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="files & directories file.readalltext("file.txt") read an entire text file."><div class="cmdrow"><pre><code>File.ReadAllText("file.txt")</code></pre><button class="copy" data-copy="File.ReadAllText("file.txt")">COPY</button></div><p>Read an entire text file.</p></article><article class="card" data-search="files & directories file.writealltext("file.txt", "hello"); write text to a file."><div class="cmdrow"><pre><code>File.WriteAllText("file.txt", "hello");</code></pre><button class="copy" data-copy="File.WriteAllText("file.txt", "hello");">COPY</button></div><p>Write text to a file.</p></article><article class="card" data-search="files & directories file.appendalltext("file.txt", "more"); append text."><div class="cmdrow"><pre><code>File.AppendAllText("file.txt", "more");</code></pre><button class="copy" data-copy="File.AppendAllText("file.txt", "more");">COPY</button></div><p>Append text.</p></article><article class="card" data-search="files & directories file.readalllines("file.txt") read all lines."><div class="cmdrow"><pre><code>File.ReadAllLines("file.txt")</code></pre><button class="copy" data-copy="File.ReadAllLines("file.txt")">COPY</button></div><p>Read all lines.</p></article><article class="card" data-search="files & directories file.writealllines("file.txt", lines); write lines."><div class="cmdrow"><pre><code>File.WriteAllLines("file.txt", lines);</code></pre><button class="copy" data-copy="File.WriteAllLines("file.txt", lines);">COPY</button></div><p>Write lines.</p></article><article class="card" data-search="files & directories file.exists("file.txt") check whether a file exists."><div class="cmdrow"><pre><code>File.Exists("file.txt")</code></pre><button class="copy" data-copy="File.Exists("file.txt")">COPY</button></div><p>Check whether a file exists.</p></article><article class="card" data-search="files & directories file.copy("a.txt", "b.txt", true); copy a file and overwrite destination."><div class="cmdrow"><pre><code>File.Copy("a.txt", "b.txt", true);</code></pre><button class="copy" data-copy="File.Copy("a.txt", "b.txt", true);">COPY</button></div><p>Copy a file and overwrite destination.</p></article><article class="card" data-search="files & directories file.move("old.txt", "new.txt"); move or rename a file."><div class="cmdrow"><pre><code>File.Move("old.txt", "new.txt");</code></pre><button class="copy" data-copy="File.Move("old.txt", "new.txt");">COPY</button></div><p>Move or rename a file.</p></article><article class="card warning" data-search="files & directories file.delete("file.txt"); delete a file. ⚠"><div class="cmdrow"><pre><code>File.Delete("file.txt");</code></pre><button class="copy" data-copy="File.Delete("file.txt");">COPY</button></div><p>Delete a file. ⚠</p></article><article class="card" data-search="files & directories directory.exists("c:\\temp") check whether a directory exists."><div class="cmdrow"><pre><code>Directory.Exists("C:\\Temp")</code></pre><button class="copy" data-copy="Directory.Exists("C:\\Temp")">COPY</button></div><p>Check whether a directory exists.</p></article><article class="card" data-search="files & directories directory.createdirectory("c:\\temp\\logs"); create directories."><div class="cmdrow"><pre><code>Directory.CreateDirectory("C:\\Temp\\Logs");</code></pre><button class="copy" data-copy="Directory.CreateDirectory("C:\\Temp\\Logs");">COPY</button></div><p>Create directories.</p></article><article class="card" data-search="files & directories directory.getfiles("c:\\temp") list files."><div class="cmdrow"><pre><code>Directory.GetFiles("C:\\Temp")</code></pre><button class="copy" data-copy="Directory.GetFiles("C:\\Temp")">COPY</button></div><p>List files.</p></article><article class="card" data-search="files & directories directory.getdirectories("c:\\temp") list directories."><div class="cmdrow"><pre><code>Directory.GetDirectories("C:\\Temp")</code></pre><button class="copy" data-copy="Directory.GetDirectories("C:\\Temp")">COPY</button></div><p>List directories.</p></article><article class="card warning" data-search="files & directories directory.delete("c:\\temp", true); delete a directory tree. ⚠"><div class="cmdrow"><pre><code>Directory.Delete("C:\\Temp", true);</code></pre><button class="copy" data-copy="Directory.Delete("C:\\Temp", true);">COPY</button></div><p>Delete a directory tree. ⚠</p></article><article class="card" data-search="files & directories path.combine("c:\\temp", "file.txt") combine path segments safely."><div class="cmdrow"><pre><code>Path.Combine("C:\\Temp", "file.txt")</code></pre><button class="copy" data-copy="Path.Combine("C:\\Temp", "file.txt")">COPY</button></div><p>Combine path segments safely.</p></article><article class="card" data-search="files & directories path.getfilename(path) get file name."><div class="cmdrow"><pre><code>Path.GetFileName(path)</code></pre><button class="copy" data-copy="Path.GetFileName(path)">COPY</button></div><p>Get file name.</p></article><article class="card" data-search="files & directories path.getextension(path) get extension."><div class="cmdrow"><pre><code>Path.GetExtension(path)</code></pre><button class="copy" data-copy="Path.GetExtension(path)">COPY</button></div><p>Get extension.</p></article></div></div></section><section class="section" id="streams"><button class="sectionhead" aria-expanded="true"><span>Streams</span><small>8 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="streams using var fs = file.openread("file.bin"); open a file stream for reading."><div class="cmdrow"><pre><code>using var fs = File.OpenRead("file.bin");</code></pre><button class="copy" data-copy="using var fs = File.OpenRead("file.bin");">COPY</button></div><p>Open a file stream for reading.</p></article><article class="card" data-search="streams using var fs = file.create("file.bin"); create a writable file stream."><div class="cmdrow"><pre><code>using var fs = File.Create("file.bin");</code></pre><button class="copy" data-copy="using var fs = File.Create("file.bin");">COPY</button></div><p>Create a writable file stream.</p></article><article class="card" data-search="streams using var reader = new streamreader("file.txt"); open text reader."><div class="cmdrow"><pre><code>using var reader = new StreamReader("file.txt");</code></pre><button class="copy" data-copy="using var reader = new StreamReader("file.txt");">COPY</button></div><p>Open text reader.</p></article><article class="card" data-search="streams string? line = reader.readline(); read one line."><div class="cmdrow"><pre><code>string? line = reader.ReadLine();</code></pre><button class="copy" data-copy="string? line = reader.ReadLine();">COPY</button></div><p>Read one line.</p></article><article class="card" data-search="streams using var writer = new streamwriter("file.txt"); open text writer."><div class="cmdrow"><pre><code>using var writer = new StreamWriter("file.txt");</code></pre><button class="copy" data-copy="using var writer = new StreamWriter("file.txt");">COPY</button></div><p>Open text writer.</p></article><article class="card" data-search="streams writer.writeline("hello"); write a line."><div class="cmdrow"><pre><code>writer.WriteLine("hello");</code></pre><button class="copy" data-copy="writer.WriteLine("hello");">COPY</button></div><p>Write a line.</p></article><article class="card" data-search="streams await file.readalltextasync("file.txt") read a file asynchronously."><div class="cmdrow"><pre><code>await File.ReadAllTextAsync("file.txt")</code></pre><button class="copy" data-copy="await File.ReadAllTextAsync("file.txt")">COPY</button></div><p>Read a file asynchronously.</p></article><article class="card" data-search="streams await file.writealltextasync("file.txt", text) write a file asynchronously."><div class="cmdrow"><pre><code>await File.WriteAllTextAsync("file.txt", text)</code></pre><button class="copy" data-copy="await File.WriteAllTextAsync("file.txt", text)">COPY</button></div><p>Write a file asynchronously.</p></article></div></div></section><section class="section" id="json---system-text-json"><button class="sectionhead" aria-expanded="true"><span>JSON — System.Text.Json</span><small>7 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="json — system.text.json using system.text.json; import built-in json support."><div class="cmdrow"><pre><code>using System.Text.Json;</code></pre><button class="copy" data-copy="using System.Text.Json;">COPY</button></div><p>Import built-in JSON support.</p></article><article class="card" data-search="json — system.text.json jsonserializer.serialize(obj) serialize an object to json."><div class="cmdrow"><pre><code>JsonSerializer.Serialize(obj)</code></pre><button class="copy" data-copy="JsonSerializer.Serialize(obj)">COPY</button></div><p>Serialize an object to JSON.</p></article><article class="card" data-search="json — system.text.json jsonserializer.serialize(obj, new jsonserializeroptions { writeindented = true }) pretty-print json."><div class="cmdrow"><pre><code>JsonSerializer.Serialize(obj, new JsonSerializerOptions { WriteIndented = true })</code></pre><button class="copy" data-copy="JsonSerializer.Serialize(obj, new JsonSerializerOptions { WriteIndented = true })">COPY</button></div><p>Pretty-print JSON.</p></article><article class="card" data-search="json — system.text.json jsonserializer.deserialize<user>(json) deserialize json."><div class="cmdrow"><pre><code>JsonSerializer.Deserialize<User>(json)</code></pre><button class="copy" data-copy="JsonSerializer.Deserialize<User>(json)">COPY</button></div><p>Deserialize JSON.</p></article><article class="card" data-search="json — system.text.json jsondocument.parse(json) parse json for dom-style traversal."><div class="cmdrow"><pre><code>JsonDocument.Parse(json)</code></pre><button class="copy" data-copy="JsonDocument.Parse(json)">COPY</button></div><p>Parse JSON for DOM-style traversal.</p></article><article class="card" data-search="json — system.text.json element.getproperty("name").getstring() read a json property."><div class="cmdrow"><pre><code>element.GetProperty("name").GetString()</code></pre><button class="copy" data-copy="element.GetProperty("name").GetString()">COPY</button></div><p>Read a JSON property.</p></article><article class="card" data-search="json — system.text.json [jsonpropertyname("user_name")] map a property to a custom json name."><div class="cmdrow"><pre><code>[JsonPropertyName("user_name")]</code></pre><button class="copy" data-copy="[JsonPropertyName("user_name")]">COPY</button></div><p>Map a property to a custom JSON name.</p></article></div></div></section><section class="section" id="dates---time"><button class="sectionhead" aria-expanded="true"><span>Dates & Time</span><small>12 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="dates & time datetime.now current local date/time."><div class="cmdrow"><pre><code>DateTime.Now</code></pre><button class="copy" data-copy="DateTime.Now">COPY</button></div><p>Current local date/time.</p></article><article class="card" data-search="dates & time datetime.utcnow current utc date/time."><div class="cmdrow"><pre><code>DateTime.UtcNow</code></pre><button class="copy" data-copy="DateTime.UtcNow">COPY</button></div><p>Current UTC date/time.</p></article><article class="card" data-search="dates & time datetime.today current local date at midnight."><div class="cmdrow"><pre><code>DateTime.Today</code></pre><button class="copy" data-copy="DateTime.Today">COPY</button></div><p>Current local date at midnight.</p></article><article class="card" data-search="dates & time datetimeoffset.now current date/time with offset."><div class="cmdrow"><pre><code>DateTimeOffset.Now</code></pre><button class="copy" data-copy="DateTimeOffset.Now">COPY</button></div><p>Current date/time with offset.</p></article><article class="card" data-search="dates & time dateonly.fromdatetime(datetime.now) extract date-only value."><div class="cmdrow"><pre><code>DateOnly.FromDateTime(DateTime.Now)</code></pre><button class="copy" data-copy="DateOnly.FromDateTime(DateTime.Now)">COPY</button></div><p>Extract date-only value.</p></article><article class="card" data-search="dates & time timeonly.fromdatetime(datetime.now) extract time-only value."><div class="cmdrow"><pre><code>TimeOnly.FromDateTime(DateTime.Now)</code></pre><button class="copy" data-copy="TimeOnly.FromDateTime(DateTime.Now)">COPY</button></div><p>Extract time-only value.</p></article><article class="card" data-search="dates & time datetime.parse("2026-09-18") parse a date/time string."><div class="cmdrow"><pre><code>DateTime.Parse("2026-09-18")</code></pre><button class="copy" data-copy="DateTime.Parse("2026-09-18")">COPY</button></div><p>Parse a date/time string.</p></article><article class="card" data-search="dates & time datetime.tryparse(text, out var dt) safely parse date/time."><div class="cmdrow"><pre><code>DateTime.TryParse(text, out var dt)</code></pre><button class="copy" data-copy="DateTime.TryParse(text, out var dt)">COPY</button></div><p>Safely parse date/time.</p></article><article class="card" data-search="dates & time datetime.now.adddays(7) add seven days."><div class="cmdrow"><pre><code>DateTime.Now.AddDays(7)</code></pre><button class="copy" data-copy="DateTime.Now.AddDays(7)">COPY</button></div><p>Add seven days.</p></article><article class="card" data-search="dates & time end - start subtract datetime values to get timespan."><div class="cmdrow"><pre><code>end - start</code></pre><button class="copy" data-copy="end - start">COPY</button></div><p>Subtract DateTime values to get TimeSpan.</p></article><article class="card" data-search="dates & time timespan.fromminutes(5) create a time span."><div class="cmdrow"><pre><code>TimeSpan.FromMinutes(5)</code></pre><button class="copy" data-copy="TimeSpan.FromMinutes(5)">COPY</button></div><p>Create a time span.</p></article><article class="card" data-search="dates & time datetime.now.tostring("yyyy-mm-dd hh:mm:ss") format date/time."><div class="cmdrow"><pre><code>DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")</code></pre><button class="copy" data-copy="DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")">COPY</button></div><p>Format date/time.</p></article></div></div></section><section class="section" id="regular-expressions"><button class="sectionhead" aria-expanded="true"><span>Regular Expressions</span><small>7 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="regular expressions using system.text.regularexpressions; import regex support."><div class="cmdrow"><pre><code>using System.Text.RegularExpressions;</code></pre><button class="copy" data-copy="using System.Text.RegularExpressions;">COPY</button></div><p>Import regex support.</p></article><article class="card" data-search="regular expressions regex.ismatch(text, @"\d+") test whether pattern matches."><div class="cmdrow"><pre><code>Regex.IsMatch(text, @"\d+")</code></pre><button class="copy" data-copy="Regex.IsMatch(text, @"\d+")">COPY</button></div><p>Test whether pattern matches.</p></article><article class="card" data-search="regular expressions regex.match(text, @"\d+") get first match."><div class="cmdrow"><pre><code>Regex.Match(text, @"\d+")</code></pre><button class="copy" data-copy="Regex.Match(text, @"\d+")">COPY</button></div><p>Get first match.</p></article><article class="card" data-search="regular expressions regex.matches(text, @"\b\w+\b") get all matches."><div class="cmdrow"><pre><code>Regex.Matches(text, @"\b\w+\b")</code></pre><button class="copy" data-copy="Regex.Matches(text, @"\b\w+\b")">COPY</button></div><p>Get all matches.</p></article><article class="card" data-search="regular expressions regex.replace(text, @"\s+", " ") replace regex matches."><div class="cmdrow"><pre><code>Regex.Replace(text, @"\s+", " ")</code></pre><button class="copy" data-copy="Regex.Replace(text, @"\s+", " ")">COPY</button></div><p>Replace regex matches.</p></article><article class="card" data-search="regular expressions regex.split(text, @"[,;]") split using regex."><div class="cmdrow"><pre><code>Regex.Split(text, @"[,;]")</code></pre><button class="copy" data-copy="Regex.Split(text, @"[,;]")">COPY</button></div><p>Split using regex.</p></article><article class="card" data-search="regular expressions match.groups[1].value read capture group."><div class="cmdrow"><pre><code>match.Groups[1].Value</code></pre><button class="copy" data-copy="match.Groups[1].Value">COPY</button></div><p>Read capture group.</p></article></div></div></section><section class="section" id="async---await"><button class="sectionhead" aria-expanded="true"><span>Async & Await</span><small>9 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="async & await async task mainasync() { } define an async method."><div class="cmdrow"><pre><code>async Task MainAsync() { }</code></pre><button class="copy" data-copy="async Task MainAsync() { }">COPY</button></div><p>Define an async method.</p></article><article class="card" data-search="async & await await task.delay(1000); pause asynchronously."><div class="cmdrow"><pre><code>await Task.Delay(1000);</code></pre><button class="copy" data-copy="await Task.Delay(1000);">COPY</button></div><p>Pause asynchronously.</p></article><article class="card" data-search="async & await var result = await getdataasync(); await an async result."><div class="cmdrow"><pre><code>var result = await GetDataAsync();</code></pre><button class="copy" data-copy="var result = await GetDataAsync();">COPY</button></div><p>Await an async result.</p></article><article class="card" data-search="async & await task<int> getvalueasync() => task.fromresult(42); return an already-computed async result."><div class="cmdrow"><pre><code>Task<int> GetValueAsync() => Task.FromResult(42);</code></pre><button class="copy" data-copy="Task<int> GetValueAsync() => Task.FromResult(42);">COPY</button></div><p>Return an already-computed async result.</p></article><article class="card" data-search="async & await await task.whenall(task1, task2); wait for all tasks."><div class="cmdrow"><pre><code>await Task.WhenAll(task1, task2);</code></pre><button class="copy" data-copy="await Task.WhenAll(task1, task2);">COPY</button></div><p>Wait for all tasks.</p></article><article class="card" data-search="async & await await task.whenany(task1, task2); wait for first completed task."><div class="cmdrow"><pre><code>await Task.WhenAny(task1, task2);</code></pre><button class="copy" data-copy="await Task.WhenAny(task1, task2);">COPY</button></div><p>Wait for first completed task.</p></article><article class="card" data-search="async & await using var cts = new cancellationtokensource(); create cancellation source."><div class="cmdrow"><pre><code>using var cts = new CancellationTokenSource();</code></pre><button class="copy" data-copy="using var cts = new CancellationTokenSource();">COPY</button></div><p>Create cancellation source.</p></article><article class="card" data-search="async & await await task.delay(5000, cts.token); pass a cancellation token."><div class="cmdrow"><pre><code>await Task.Delay(5000, cts.Token);</code></pre><button class="copy" data-copy="await Task.Delay(5000, cts.Token);">COPY</button></div><p>Pass a cancellation token.</p></article><article class="card" data-search="async & await cts.cancel(); request cancellation."><div class="cmdrow"><pre><code>cts.Cancel();</code></pre><button class="copy" data-copy="cts.Cancel();">COPY</button></div><p>Request cancellation.</p></article></div></div></section><section class="section" id="tasks---parallelism"><button class="sectionhead" aria-expanded="true"><span>Tasks & Parallelism</span><small>5 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="tasks & parallelism task.run(() => work()) run cpu-bound work on the thread pool."><div class="cmdrow"><pre><code>Task.Run(() => Work())</code></pre><button class="copy" data-copy="Task.Run(() => Work())">COPY</button></div><p>Run CPU-bound work on the thread pool.</p></article><article class="card" data-search="tasks & parallelism parallel.for(0, 10, i => work(i)); run loop iterations in parallel."><div class="cmdrow"><pre><code>Parallel.For(0, 10, i => Work(i));</code></pre><button class="copy" data-copy="Parallel.For(0, 10, i => Work(i));">COPY</button></div><p>Run loop iterations in parallel.</p></article><article class="card" data-search="tasks & parallelism parallel.foreach(items, item => work(item)); parallelize collection work."><div class="cmdrow"><pre><code>Parallel.ForEach(items, item => Work(item));</code></pre><button class="copy" data-copy="Parallel.ForEach(items, item => Work(item));">COPY</button></div><p>Parallelize collection work.</p></article><article class="card" data-search="tasks & parallelism await parallel.foreachasync(items, async (item, ct) => await workasync(item, ct)); async parallel iteration on modern .net."><div class="cmdrow"><pre><code>await Parallel.ForEachAsync(items, async (item, ct) => await WorkAsync(item, ct));</code></pre><button class="copy" data-copy="await Parallel.ForEachAsync(items, async (item, ct) => await WorkAsync(item, ct));">COPY</button></div><p>Async parallel iteration on modern .NET.</p></article><article class="card" data-search="tasks & parallelism task.waitall(tasks); synchronously wait for all tasks."><div class="cmdrow"><pre><code>Task.WaitAll(tasks);</code></pre><button class="copy" data-copy="Task.WaitAll(tasks);">COPY</button></div><p>Synchronously wait for all tasks.</p></article></div></div></section><section class="section" id="threads---synchronization"><button class="sectionhead" aria-expanded="true"><span>Threads & Synchronization</span><small>11 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="threads & synchronization var t = new thread(() => work()); create a dedicated thread."><div class="cmdrow"><pre><code>var t = new Thread(() => Work());</code></pre><button class="copy" data-copy="var t = new Thread(() => Work());">COPY</button></div><p>Create a dedicated thread.</p></article><article class="card" data-search="threads & synchronization t.start(); start a thread."><div class="cmdrow"><pre><code>t.Start();</code></pre><button class="copy" data-copy="t.Start();">COPY</button></div><p>Start a thread.</p></article><article class="card" data-search="threads & synchronization t.join(); wait for thread completion."><div class="cmdrow"><pre><code>t.Join();</code></pre><button class="copy" data-copy="t.Join();">COPY</button></div><p>Wait for thread completion.</p></article><article class="card" data-search="threads & synchronization lock (gate) { } protect a critical section."><div class="cmdrow"><pre><code>lock (gate) { }</code></pre><button class="copy" data-copy="lock (gate) { }">COPY</button></div><p>Protect a critical section.</p></article><article class="card" data-search="threads & synchronization monitor.enter(gate); enter a monitor manually."><div class="cmdrow"><pre><code>Monitor.Enter(gate);</code></pre><button class="copy" data-copy="Monitor.Enter(gate);">COPY</button></div><p>Enter a monitor manually.</p></article><article class="card" data-search="threads & synchronization monitor.exit(gate); exit a monitor manually."><div class="cmdrow"><pre><code>Monitor.Exit(gate);</code></pre><button class="copy" data-copy="Monitor.Exit(gate);">COPY</button></div><p>Exit a monitor manually.</p></article><article class="card" data-search="threads & synchronization var mutex = new mutex(); create an os-level mutex."><div class="cmdrow"><pre><code>var mutex = new Mutex();</code></pre><button class="copy" data-copy="var mutex = new Mutex();">COPY</button></div><p>Create an OS-level mutex.</p></article><article class="card" data-search="threads & synchronization var sem = new semaphoreslim(3); limit concurrency."><div class="cmdrow"><pre><code>var sem = new SemaphoreSlim(3);</code></pre><button class="copy" data-copy="var sem = new SemaphoreSlim(3);">COPY</button></div><p>Limit concurrency.</p></article><article class="card" data-search="threads & synchronization await sem.waitasync(); wait asynchronously for semaphore access."><div class="cmdrow"><pre><code>await sem.WaitAsync();</code></pre><button class="copy" data-copy="await sem.WaitAsync();">COPY</button></div><p>Wait asynchronously for semaphore access.</p></article><article class="card" data-search="threads & synchronization sem.release(); release semaphore."><div class="cmdrow"><pre><code>sem.Release();</code></pre><button class="copy" data-copy="sem.Release();">COPY</button></div><p>Release semaphore.</p></article><article class="card" data-search="threads & synchronization interlocked.increment(ref count) atomically increment an integer."><div class="cmdrow"><pre><code>Interlocked.Increment(ref count)</code></pre><button class="copy" data-copy="Interlocked.Increment(ref count)">COPY</button></div><p>Atomically increment an integer.</p></article></div></div></section><section class="section" id="http-client"><button class="sectionhead" aria-expanded="true"><span>HTTP Client</span><small>8 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="http client using var client = new httpclient(); create an http client."><div class="cmdrow"><pre><code>using var client = new HttpClient();</code></pre><button class="copy" data-copy="using var client = new HttpClient();">COPY</button></div><p>Create an HTTP client.</p></article><article class="card" data-search="http client await client.getstringasync(url) get response body as text."><div class="cmdrow"><pre><code>await client.GetStringAsync(url)</code></pre><button class="copy" data-copy="await client.GetStringAsync(url)">COPY</button></div><p>GET response body as text.</p></article><article class="card" data-search="http client await client.getasync(url) send get and return httpresponsemessage."><div class="cmdrow"><pre><code>await client.GetAsync(url)</code></pre><button class="copy" data-copy="await client.GetAsync(url)">COPY</button></div><p>Send GET and return HttpResponseMessage.</p></article><article class="card" data-search="http client await client.postasjsonasync(url, data) post json using system.net.http.json."><div class="cmdrow"><pre><code>await client.PostAsJsonAsync(url, data)</code></pre><button class="copy" data-copy="await client.PostAsJsonAsync(url, data)">COPY</button></div><p>POST JSON using System.Net.Http.Json.</p></article><article class="card" data-search="http client await client.getfromjsonasync<user>(url) get and deserialize json."><div class="cmdrow"><pre><code>await client.GetFromJsonAsync<User>(url)</code></pre><button class="copy" data-copy="await client.GetFromJsonAsync<User>(url)">COPY</button></div><p>GET and deserialize JSON.</p></article><article class="card" data-search="http client response.statuscode read http status."><div class="cmdrow"><pre><code>response.StatusCode</code></pre><button class="copy" data-copy="response.StatusCode">COPY</button></div><p>Read HTTP status.</p></article><article class="card" data-search="http client response.issuccessstatuscode check success status."><div class="cmdrow"><pre><code>response.IsSuccessStatusCode</code></pre><button class="copy" data-copy="response.IsSuccessStatusCode">COPY</button></div><p>Check success status.</p></article><article class="card" data-search="http client response.ensuresuccessstatuscode(); throw on non-success http response."><div class="cmdrow"><pre><code>response.EnsureSuccessStatusCode();</code></pre><button class="copy" data-copy="response.EnsureSuccessStatusCode();">COPY</button></div><p>Throw on non-success HTTP response.</p></article></div></div></section><section class="section" id="console-input---cli"><button class="sectionhead" aria-expanded="true"><span>Console Input & CLI</span><small>5 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="console input & cli string? input = console.readline(); read a line from the console."><div class="cmdrow"><pre><code>string? input = Console.ReadLine();</code></pre><button class="copy" data-copy="string? input = Console.ReadLine();">COPY</button></div><p>Read a line from the console.</p></article><article class="card" data-search="console input & cli console.readkey(); read one keypress."><div class="cmdrow"><pre><code>Console.ReadKey();</code></pre><button class="copy" data-copy="Console.ReadKey();">COPY</button></div><p>Read one keypress.</p></article><article class="card" data-search="console input & cli args.length number of command-line arguments."><div class="cmdrow"><pre><code>args.Length</code></pre><button class="copy" data-copy="args.Length">COPY</button></div><p>Number of command-line arguments.</p></article><article class="card" data-search="console input & cli args[0] first command-line argument."><div class="cmdrow"><pre><code>args[0]</code></pre><button class="copy" data-copy="args[0]">COPY</button></div><p>First command-line argument.</p></article><article class="card" data-search="console input & cli environment.getcommandlineargs() get full process argument list."><div class="cmdrow"><pre><code>Environment.GetCommandLineArgs()</code></pre><button class="copy" data-copy="Environment.GetCommandLineArgs()">COPY</button></div><p>Get full process argument list.</p></article></div></div></section><section class="section" id="environment---system"><button class="sectionhead" aria-expanded="true"><span>Environment & System</span><small>10 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="environment & system environment.osversion operating-system version."><div class="cmdrow"><pre><code>Environment.OSVersion</code></pre><button class="copy" data-copy="Environment.OSVersion">COPY</button></div><p>Operating-system version.</p></article><article class="card" data-search="environment & system environment.machinename computer name."><div class="cmdrow"><pre><code>Environment.MachineName</code></pre><button class="copy" data-copy="Environment.MachineName">COPY</button></div><p>Computer name.</p></article><article class="card" data-search="environment & system environment.username current user name."><div class="cmdrow"><pre><code>Environment.UserName</code></pre><button class="copy" data-copy="Environment.UserName">COPY</button></div><p>Current user name.</p></article><article class="card" data-search="environment & system environment.currentdirectory current working directory."><div class="cmdrow"><pre><code>Environment.CurrentDirectory</code></pre><button class="copy" data-copy="Environment.CurrentDirectory">COPY</button></div><p>Current working directory.</p></article><article class="card" data-search="environment & system environment.getenvironmentvariable("path") read an environment variable."><div class="cmdrow"><pre><code>Environment.GetEnvironmentVariable("PATH")</code></pre><button class="copy" data-copy="Environment.GetEnvironmentVariable("PATH")">COPY</button></div><p>Read an environment variable.</p></article><article class="card" data-search="environment & system environment.setenvironmentvariable("mode", "dev") set an environment variable."><div class="cmdrow"><pre><code>Environment.SetEnvironmentVariable("MODE", "dev")</code></pre><button class="copy" data-copy="Environment.SetEnvironmentVariable("MODE", "dev")">COPY</button></div><p>Set an environment variable.</p></article><article class="card" data-search="environment & system environment.processorcount logical processor count."><div class="cmdrow"><pre><code>Environment.ProcessorCount</code></pre><button class="copy" data-copy="Environment.ProcessorCount">COPY</button></div><p>Logical processor count.</p></article><article class="card" data-search="environment & system environment.exit(0); terminate the process."><div class="cmdrow"><pre><code>Environment.Exit(0);</code></pre><button class="copy" data-copy="Environment.Exit(0);">COPY</button></div><p>Terminate the process.</p></article><article class="card" data-search="environment & system gc.gettotalmemory(false) get managed memory estimate."><div class="cmdrow"><pre><code>GC.GetTotalMemory(false)</code></pre><button class="copy" data-copy="GC.GetTotalMemory(false)">COPY</button></div><p>Get managed memory estimate.</p></article><article class="card" data-search="environment & system gc.collect(); request garbage collection; usually unnecessary."><div class="cmdrow"><pre><code>GC.Collect();</code></pre><button class="copy" data-copy="GC.Collect();">COPY</button></div><p>Request garbage collection; usually unnecessary.</p></article></div></div></section><section class="section" id="reflection"><button class="sectionhead" aria-expanded="true"><span>Reflection</span><small>9 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="reflection typeof(user) get type metadata."><div class="cmdrow"><pre><code>typeof(User)</code></pre><button class="copy" data-copy="typeof(User)">COPY</button></div><p>Get Type metadata.</p></article><article class="card" data-search="reflection obj.gettype() get runtime type."><div class="cmdrow"><pre><code>obj.GetType()</code></pre><button class="copy" data-copy="obj.GetType()">COPY</button></div><p>Get runtime type.</p></article><article class="card" data-search="reflection type.getproperties() list properties."><div class="cmdrow"><pre><code>type.GetProperties()</code></pre><button class="copy" data-copy="type.GetProperties()">COPY</button></div><p>List properties.</p></article><article class="card" data-search="reflection type.getmethods() list methods."><div class="cmdrow"><pre><code>type.GetMethods()</code></pre><button class="copy" data-copy="type.GetMethods()">COPY</button></div><p>List methods.</p></article><article class="card" data-search="reflection type.getfields() list fields."><div class="cmdrow"><pre><code>type.GetFields()</code></pre><button class="copy" data-copy="type.GetFields()">COPY</button></div><p>List fields.</p></article><article class="card" data-search="reflection type.getconstructors() list constructors."><div class="cmdrow"><pre><code>type.GetConstructors()</code></pre><button class="copy" data-copy="type.GetConstructors()">COPY</button></div><p>List constructors.</p></article><article class="card" data-search="reflection activator.createinstance(type) create an instance dynamically."><div class="cmdrow"><pre><code>Activator.CreateInstance(type)</code></pre><button class="copy" data-copy="Activator.CreateInstance(type)">COPY</button></div><p>Create an instance dynamically.</p></article><article class="card" data-search="reflection property.getvalue(obj) read property reflectively."><div class="cmdrow"><pre><code>property.GetValue(obj)</code></pre><button class="copy" data-copy="property.GetValue(obj)">COPY</button></div><p>Read property reflectively.</p></article><article class="card" data-search="reflection property.setvalue(obj, value) set property reflectively."><div class="cmdrow"><pre><code>property.SetValue(obj, value)</code></pre><button class="copy" data-copy="property.SetValue(obj, value)">COPY</button></div><p>Set property reflectively.</p></article></div></div></section><section class="section" id="attributes"><button class="sectionhead" aria-expanded="true"><span>Attributes</span><small>5 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="attributes [obsolete] mark an api as obsolete."><div class="cmdrow"><pre><code>[Obsolete]</code></pre><button class="copy" data-copy="[Obsolete]">COPY</button></div><p>Mark an API as obsolete.</p></article><article class="card" data-search="attributes [flags] mark enum as bit flags."><div class="cmdrow"><pre><code>[Flags]</code></pre><button class="copy" data-copy="[Flags]">COPY</button></div><p>Mark enum as bit flags.</p></article><article class="card" data-search="attributes [serializable] mark a type serializable for compatible serializers."><div class="cmdrow"><pre><code>[Serializable]</code></pre><button class="copy" data-copy="[Serializable]">COPY</button></div><p>Mark a type serializable for compatible serializers.</p></article><article class="card" data-search="attributes [attributeusage(attributetargets.class)] control custom attribute usage."><div class="cmdrow"><pre><code>[AttributeUsage(AttributeTargets.Class)]</code></pre><button class="copy" data-copy="[AttributeUsage(AttributeTargets.Class)]">COPY</button></div><p>Control custom attribute usage.</p></article><article class="card" data-search="attributes class myattribute : attribute { } create a custom attribute."><div class="cmdrow"><pre><code>class MyAttribute : Attribute { }</code></pre><button class="copy" data-copy="class MyAttribute : Attribute { }">COPY</button></div><p>Create a custom attribute.</p></article></div></div></section><section class="section" id="tuples---deconstruction"><button class="sectionhead" aria-expanded="true"><span>Tuples & Deconstruction</span><small>4 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="tuples & deconstruction (int x, int y) point = (10, 20); create a named tuple."><div class="cmdrow"><pre><code>(int x, int y) point = (10, 20);</code></pre><button class="copy" data-copy="(int x, int y) point = (10, 20);">COPY</button></div><p>Create a named tuple.</p></article><article class="card" data-search="tuples & deconstruction var (x, y) = point; deconstruct a tuple."><div class="cmdrow"><pre><code>var (x, y) = point;</code></pre><button class="copy" data-copy="var (x, y) = point;">COPY</button></div><p>Deconstruct a tuple.</p></article><article class="card" data-search="tuples & deconstruction return (name, age); return multiple values using a tuple."><div class="cmdrow"><pre><code>return (name, age);</code></pre><button class="copy" data-copy="return (name, age);">COPY</button></div><p>Return multiple values using a tuple.</p></article><article class="card" data-search="tuples & deconstruction dictionary<(int,int), string> use a tuple as a dictionary key."><div class="cmdrow"><pre><code>Dictionary<(int,int), string></code></pre><button class="copy" data-copy="Dictionary<(int,int), string>">COPY</button></div><p>Use a tuple as a dictionary key.</p></article></div></div></section><section class="section" id="pattern-matching"><button class="sectionhead" aria-expanded="true"><span>Pattern Matching</span><small>5 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="pattern matching if (obj is string s) { } type pattern."><div class="cmdrow"><pre><code>if (obj is string s) { }</code></pre><button class="copy" data-copy="if (obj is string s) { }">COPY</button></div><p>Type pattern.</p></article><article class="card" data-search="pattern matching if (x is > 0 and < 10) { } relational/logical pattern."><div class="cmdrow"><pre><code>if (x is > 0 and < 10) { }</code></pre><button class="copy" data-copy="if (x is > 0 and < 10) { }">COPY</button></div><p>Relational/logical pattern.</p></article><article class="card" data-search="pattern matching var result = value switch { null => "none", string s => s, _ => "other" }; pattern-based switch expression."><div class="cmdrow"><pre><code>var result = value switch { null => "none", string s => s, _ => "other" };</code></pre><button class="copy" data-copy="var result = value switch { null => "none", string s => s, _ => "other" };">COPY</button></div><p>Pattern-based switch expression.</p></article><article class="card" data-search="pattern matching if (user is { age: >= 18, active: true }) { } property pattern."><div class="cmdrow"><pre><code>if (user is { Age: >= 18, Active: true }) { }</code></pre><button class="copy" data-copy="if (user is { Age: >= 18, Active: true }) { }">COPY</button></div><p>Property pattern.</p></article><article class="card" data-search="pattern matching if (items is [1, 2, ..]) { } list pattern in modern c#."><div class="cmdrow"><pre><code>if (items is [1, 2, ..]) { }</code></pre><button class="copy" data-copy="if (items is [1, 2, ..]) { }">COPY</button></div><p>List pattern in modern C#.</p></article></div></div></section><section class="section" id="net-cli"><button class="sectionhead" aria-expanded="true"><span>.NET CLI</span><small>14 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search=".net cli dotnet --info show .net sdk/runtime information."><div class="cmdrow"><pre><code>dotnet --info</code></pre><button class="copy" data-copy="dotnet --info">COPY</button></div><p>Show .NET SDK/runtime information.</p></article><article class="card" data-search=".net cli dotnet --list-sdks list installed sdks."><div class="cmdrow"><pre><code>dotnet --list-sdks</code></pre><button class="copy" data-copy="dotnet --list-sdks">COPY</button></div><p>List installed SDKs.</p></article><article class="card" data-search=".net cli dotnet new console -n app create a console project."><div class="cmdrow"><pre><code>dotnet new console -n App</code></pre><button class="copy" data-copy="dotnet new console -n App">COPY</button></div><p>Create a console project.</p></article><article class="card" data-search=".net cli dotnet new classlib -n library create a class library."><div class="cmdrow"><pre><code>dotnet new classlib -n Library</code></pre><button class="copy" data-copy="dotnet new classlib -n Library">COPY</button></div><p>Create a class library.</p></article><article class="card" data-search=".net cli dotnet new webapi -n api create an asp.net core web api project."><div class="cmdrow"><pre><code>dotnet new webapi -n Api</code></pre><button class="copy" data-copy="dotnet new webapi -n Api">COPY</button></div><p>Create an ASP.NET Core Web API project.</p></article><article class="card" data-search=".net cli dotnet build build the project."><div class="cmdrow"><pre><code>dotnet build</code></pre><button class="copy" data-copy="dotnet build">COPY</button></div><p>Build the project.</p></article><article class="card" data-search=".net cli dotnet run build and run the project."><div class="cmdrow"><pre><code>dotnet run</code></pre><button class="copy" data-copy="dotnet run">COPY</button></div><p>Build and run the project.</p></article><article class="card" data-search=".net cli dotnet test run tests."><div class="cmdrow"><pre><code>dotnet test</code></pre><button class="copy" data-copy="dotnet test">COPY</button></div><p>Run tests.</p></article><article class="card" data-search=".net cli dotnet clean remove build outputs."><div class="cmdrow"><pre><code>dotnet clean</code></pre><button class="copy" data-copy="dotnet clean">COPY</button></div><p>Remove build outputs.</p></article><article class="card" data-search=".net cli dotnet restore restore nuget packages."><div class="cmdrow"><pre><code>dotnet restore</code></pre><button class="copy" data-copy="dotnet restore">COPY</button></div><p>Restore NuGet packages.</p></article><article class="card" data-search=".net cli dotnet add package packagename add a nuget package."><div class="cmdrow"><pre><code>dotnet add package PackageName</code></pre><button class="copy" data-copy="dotnet add package PackageName">COPY</button></div><p>Add a NuGet package.</p></article><article class="card" data-search=".net cli dotnet remove package packagename remove a nuget package."><div class="cmdrow"><pre><code>dotnet remove package PackageName</code></pre><button class="copy" data-copy="dotnet remove package PackageName">COPY</button></div><p>Remove a NuGet package.</p></article><article class="card" data-search=".net cli dotnet list package list package references."><div class="cmdrow"><pre><code>dotnet list package</code></pre><button class="copy" data-copy="dotnet list package">COPY</button></div><p>List package references.</p></article><article class="card" data-search=".net cli dotnet publish -c release publish a release build."><div class="cmdrow"><pre><code>dotnet publish -c Release</code></pre><button class="copy" data-copy="dotnet publish -c Release">COPY</button></div><p>Publish a release build.</p></article></div></div></section><section class="section" id="nuget"><button class="sectionhead" aria-expanded="true"><span>NuGet</span><small>4 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="nuget dotnet add package newtonsoft.json add a nuget package."><div class="cmdrow"><pre><code>dotnet add package Newtonsoft.Json</code></pre><button class="copy" data-copy="dotnet add package Newtonsoft.Json">COPY</button></div><p>Add a NuGet package.</p></article><article class="card" data-search="nuget dotnet restore restore packages."><div class="cmdrow"><pre><code>dotnet restore</code></pre><button class="copy" data-copy="dotnet restore">COPY</button></div><p>Restore packages.</p></article><article class="card" data-search="nuget dotnet list package --outdated list outdated package references."><div class="cmdrow"><pre><code>dotnet list package --outdated</code></pre><button class="copy" data-copy="dotnet list package --outdated">COPY</button></div><p>List outdated package references.</p></article><article class="card" data-search="nuget dotnet nuget locals all --clear clear nuget caches."><div class="cmdrow"><pre><code>dotnet nuget locals all --clear</code></pre><button class="copy" data-copy="dotnet nuget locals all --clear">COPY</button></div><p>Clear NuGet caches.</p></article></div></div></section><section class="section" id="unit-testing"><button class="sectionhead" aria-expanded="true"><span>Unit Testing</span><small>10 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="unit testing [fact] public void addsnumbers() { assert.equal(4, 2 + 2); } basic xunit test."><div class="cmdrow"><pre><code>[Fact] public void AddsNumbers() { Assert.Equal(4, 2 + 2); }</code></pre><button class="copy" data-copy="[Fact] public void AddsNumbers() { Assert.Equal(4, 2 + 2); }">COPY</button></div><p>Basic xUnit test.</p></article><article class="card" data-search="unit testing assert.equal(expected, actual); assert equality in xunit."><div class="cmdrow"><pre><code>Assert.Equal(expected, actual);</code></pre><button class="copy" data-copy="Assert.Equal(expected, actual);">COPY</button></div><p>Assert equality in xUnit.</p></article><article class="card" data-search="unit testing assert.true(condition); assert true."><div class="cmdrow"><pre><code>Assert.True(condition);</code></pre><button class="copy" data-copy="Assert.True(condition);">COPY</button></div><p>Assert true.</p></article><article class="card" data-search="unit testing assert.false(condition); assert false."><div class="cmdrow"><pre><code>Assert.False(condition);</code></pre><button class="copy" data-copy="Assert.False(condition);">COPY</button></div><p>Assert false.</p></article><article class="card" data-search="unit testing assert.null(value); assert null."><div class="cmdrow"><pre><code>Assert.Null(value);</code></pre><button class="copy" data-copy="Assert.Null(value);">COPY</button></div><p>Assert null.</p></article><article class="card" data-search="unit testing assert.notnull(value); assert non-null."><div class="cmdrow"><pre><code>Assert.NotNull(value);</code></pre><button class="copy" data-copy="Assert.NotNull(value);">COPY</button></div><p>Assert non-null.</p></article><article class="card" data-search="unit testing assert.throws<invalidoperationexception>(() => func()); assert an exception."><div class="cmdrow"><pre><code>Assert.Throws<InvalidOperationException>(() => Func());</code></pre><button class="copy" data-copy="Assert.Throws<InvalidOperationException>(() => Func());">COPY</button></div><p>Assert an exception.</p></article><article class="card" data-search="unit testing [theory] mark a parameterized xunit test."><div class="cmdrow"><pre><code>[Theory]</code></pre><button class="copy" data-copy="[Theory]">COPY</button></div><p>Mark a parameterized xUnit test.</p></article><article class="card" data-search="unit testing [inlinedata(1,2,3)] provide inline test data."><div class="cmdrow"><pre><code>[InlineData(1,2,3)]</code></pre><button class="copy" data-copy="[InlineData(1,2,3)]">COPY</button></div><p>Provide inline test data.</p></article><article class="card" data-search="unit testing dotnet test run project tests."><div class="cmdrow"><pre><code>dotnet test</code></pre><button class="copy" data-copy="dotnet test">COPY</button></div><p>Run project tests.</p></article></div></div></section><section class="section" id="asp-net-core-basics"><button class="sectionhead" aria-expanded="true"><span>ASP.NET Core Basics</span><small>11 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="asp.net core basics var builder = webapplication.createbuilder(args); create an asp.net core app builder."><div class="cmdrow"><pre><code>var builder = WebApplication.CreateBuilder(args);</code></pre><button class="copy" data-copy="var builder = WebApplication.CreateBuilder(args);">COPY</button></div><p>Create an ASP.NET Core app builder.</p></article><article class="card" data-search="asp.net core basics var app = builder.build(); build the web application."><div class="cmdrow"><pre><code>var app = builder.Build();</code></pre><button class="copy" data-copy="var app = builder.Build();">COPY</button></div><p>Build the web application.</p></article><article class="card" data-search="asp.net core basics app.mapget("/", () => "hello"); map a minimal get endpoint."><div class="cmdrow"><pre><code>app.MapGet("/", () => "Hello");</code></pre><button class="copy" data-copy="app.MapGet("/", () => "Hello");">COPY</button></div><p>Map a minimal GET endpoint.</p></article><article class="card" data-search="asp.net core basics app.mappost("/users", (user user) => results.ok(user)); map a post endpoint."><div class="cmdrow"><pre><code>app.MapPost("/users", (User user) => Results.Ok(user));</code></pre><button class="copy" data-copy="app.MapPost("/users", (User user) => Results.Ok(user));">COPY</button></div><p>Map a POST endpoint.</p></article><article class="card" data-search="asp.net core basics app.run(); start the web application."><div class="cmdrow"><pre><code>app.Run();</code></pre><button class="copy" data-copy="app.Run();">COPY</button></div><p>Start the web application.</p></article><article class="card" data-search="asp.net core basics builder.services.addcontrollers(); register mvc/web api controllers."><div class="cmdrow"><pre><code>builder.Services.AddControllers();</code></pre><button class="copy" data-copy="builder.Services.AddControllers();">COPY</button></div><p>Register MVC/Web API controllers.</p></article><article class="card" data-search="asp.net core basics app.mapcontrollers(); map attribute-routed controllers."><div class="cmdrow"><pre><code>app.MapControllers();</code></pre><button class="copy" data-copy="app.MapControllers();">COPY</button></div><p>Map attribute-routed controllers.</p></article><article class="card" data-search="asp.net core basics [apicontroller] mark a web api controller."><div class="cmdrow"><pre><code>[ApiController]</code></pre><button class="copy" data-copy="[ApiController]">COPY</button></div><p>Mark a Web API controller.</p></article><article class="card" data-search="asp.net core basics [route("api/[controller]")] set controller route template."><div class="cmdrow"><pre><code>[Route("api/[controller]")]</code></pre><button class="copy" data-copy="[Route("api/[controller]")]">COPY</button></div><p>Set controller route template.</p></article><article class="card" data-search="asp.net core basics [httpget] mark a get action."><div class="cmdrow"><pre><code>[HttpGet]</code></pre><button class="copy" data-copy="[HttpGet]">COPY</button></div><p>Mark a GET action.</p></article><article class="card" data-search="asp.net core basics [httppost] mark a post action."><div class="cmdrow"><pre><code>[HttpPost]</code></pre><button class="copy" data-copy="[HttpPost]">COPY</button></div><p>Mark a POST action.</p></article></div></div></section><section class="section" id="asp-net-core-dependency-injection"><button class="sectionhead" aria-expanded="true"><span>ASP.NET Core Dependency Injection</span><small>4 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="asp.net core dependency injection builder.services.addsingleton<imyservice, myservice>(); register a singleton service."><div class="cmdrow"><pre><code>builder.Services.AddSingleton<IMyService, MyService>();</code></pre><button class="copy" data-copy="builder.Services.AddSingleton<IMyService, MyService>();">COPY</button></div><p>Register a singleton service.</p></article><article class="card" data-search="asp.net core dependency injection builder.services.addscoped<imyservice, myservice>(); register one service instance per request scope."><div class="cmdrow"><pre><code>builder.Services.AddScoped<IMyService, MyService>();</code></pre><button class="copy" data-copy="builder.Services.AddScoped<IMyService, MyService>();">COPY</button></div><p>Register one service instance per request scope.</p></article><article class="card" data-search="asp.net core dependency injection builder.services.addtransient<imyservice, myservice>(); create a new service instance per resolution."><div class="cmdrow"><pre><code>builder.Services.AddTransient<IMyService, MyService>();</code></pre><button class="copy" data-copy="builder.Services.AddTransient<IMyService, MyService>();">COPY</button></div><p>Create a new service instance per resolution.</p></article><article class="card" data-search="asp.net core dependency injection public mycontroller(imyservice service) { _service = service; } constructor injection."><div class="cmdrow"><pre><code>public MyController(IMyService service) { _service = service; }</code></pre><button class="copy" data-copy="public MyController(IMyService service) { _service = service; }">COPY</button></div><p>Constructor injection.</p></article></div></div></section><section class="section" id="entity-framework-core"><button class="sectionhead" aria-expanded="true"><span>Entity Framework Core</span><small>11 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="entity framework core dotnet add package microsoft.entityframeworkcore.sqlite add ef core sqlite provider."><div class="cmdrow"><pre><code>dotnet add package Microsoft.EntityFrameworkCore.Sqlite</code></pre><button class="copy" data-copy="dotnet add package Microsoft.EntityFrameworkCore.Sqlite">COPY</button></div><p>Add EF Core SQLite provider.</p></article><article class="card" data-search="entity framework core public class appdbcontext : dbcontext { public dbset<user> users => set<user>(); } define a dbcontext."><div class="cmdrow"><pre><code>public class AppDbContext : DbContext { public DbSet<User> Users => Set<User>(); }</code></pre><button class="copy" data-copy="public class AppDbContext : DbContext { public DbSet<User> Users => Set<User>(); }">COPY</button></div><p>Define a DbContext.</p></article><article class="card" data-search="entity framework core builder.services.adddbcontext<appdbcontext>(o => o.usesqlite("data source=app.db")); register sqlite dbcontext."><div class="cmdrow"><pre><code>builder.Services.AddDbContext<AppDbContext>(o => o.UseSqlite("Data Source=app.db"));</code></pre><button class="copy" data-copy="builder.Services.AddDbContext<AppDbContext>(o => o.UseSqlite("Data Source=app.db"));">COPY</button></div><p>Register SQLite DbContext.</p></article><article class="card" data-search="entity framework core await db.users.tolistasync() query all users asynchronously."><div class="cmdrow"><pre><code>await db.Users.ToListAsync()</code></pre><button class="copy" data-copy="await db.Users.ToListAsync()">COPY</button></div><p>Query all users asynchronously.</p></article><article class="card" data-search="entity framework core await db.users.findasync(id) find by primary key."><div class="cmdrow"><pre><code>await db.Users.FindAsync(id)</code></pre><button class="copy" data-copy="await db.Users.FindAsync(id)">COPY</button></div><p>Find by primary key.</p></article><article class="card" data-search="entity framework core db.users.add(user); track a new entity."><div class="cmdrow"><pre><code>db.Users.Add(user);</code></pre><button class="copy" data-copy="db.Users.Add(user);">COPY</button></div><p>Track a new entity.</p></article><article class="card" data-search="entity framework core await db.savechangesasync(); persist tracked changes."><div class="cmdrow"><pre><code>await db.SaveChangesAsync();</code></pre><button class="copy" data-copy="await db.SaveChangesAsync();">COPY</button></div><p>Persist tracked changes.</p></article><article class="card" data-search="entity framework core db.users.remove(user); mark an entity for deletion."><div class="cmdrow"><pre><code>db.Users.Remove(user);</code></pre><button class="copy" data-copy="db.Users.Remove(user);">COPY</button></div><p>Mark an entity for deletion.</p></article><article class="card" data-search="entity framework core await db.users.where(x => x.active).tolistasync() filter entities with linq."><div class="cmdrow"><pre><code>await db.Users.Where(x => x.Active).ToListAsync()</code></pre><button class="copy" data-copy="await db.Users.Where(x => x.Active).ToListAsync()">COPY</button></div><p>Filter entities with LINQ.</p></article><article class="card" data-search="entity framework core dotnet ef migrations add initialcreate create a migration."><div class="cmdrow"><pre><code>dotnet ef migrations add InitialCreate</code></pre><button class="copy" data-copy="dotnet ef migrations add InitialCreate">COPY</button></div><p>Create a migration.</p></article><article class="card" data-search="entity framework core dotnet ef database update apply migrations."><div class="cmdrow"><pre><code>dotnet ef database update</code></pre><button class="copy" data-copy="dotnet ef database update">COPY</button></div><p>Apply migrations.</p></article></div></div></section><section class="section" id="logging"><button class="sectionhead" aria-expanded="true"><span>Logging</span><small>5 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="logging ilogger<myclass> logger inject a typed logger."><div class="cmdrow"><pre><code>ILogger<MyClass> logger</code></pre><button class="copy" data-copy="ILogger<MyClass> logger">COPY</button></div><p>Inject a typed logger.</p></article><article class="card" data-search="logging logger.loginformation("started"); write informational log."><div class="cmdrow"><pre><code>logger.LogInformation("Started");</code></pre><button class="copy" data-copy="logger.LogInformation("Started");">COPY</button></div><p>Write informational log.</p></article><article class="card" data-search="logging logger.logwarning("something odd"); write warning."><div class="cmdrow"><pre><code>logger.LogWarning("Something odd");</code></pre><button class="copy" data-copy="logger.LogWarning("Something odd");">COPY</button></div><p>Write warning.</p></article><article class="card" data-search="logging logger.logerror(ex, "operation failed"); log exception with error message."><div class="cmdrow"><pre><code>logger.LogError(ex, "Operation failed");</code></pre><button class="copy" data-copy="logger.LogError(ex, "Operation failed");">COPY</button></div><p>Log exception with error message.</p></article><article class="card" data-search="logging logger.logdebug("value {value}", value); structured debug logging."><div class="cmdrow"><pre><code>logger.LogDebug("Value {Value}", value);</code></pre><button class="copy" data-copy="logger.LogDebug("Value {Value}", value);">COPY</button></div><p>Structured debug logging.</p></article></div></div></section><section class="section" id="useful-one-liners"><button class="sectionhead" aria-expanded="true"><span>Useful One-Liners</span><small>12 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="useful one-liners var unique = items.distinct().tolist(); remove duplicates."><div class="cmdrow"><pre><code>var unique = items.Distinct().ToList();</code></pre><button class="copy" data-copy="var unique = items.Distinct().ToList();">COPY</button></div><p>Remove duplicates.</p></article><article class="card" data-search="useful one-liners var sum = nums.sum(); sum numbers."><div class="cmdrow"><pre><code>var sum = nums.Sum();</code></pre><button class="copy" data-copy="var sum = nums.Sum();">COPY</button></div><p>Sum numbers.</p></article><article class="card" data-search="useful one-liners var avg = nums.average(); average numbers."><div class="cmdrow"><pre><code>var avg = nums.Average();</code></pre><button class="copy" data-copy="var avg = nums.Average();">COPY</button></div><p>Average numbers.</p></article><article class="card" data-search="useful one-liners var max = nums.max(); maximum value."><div class="cmdrow"><pre><code>var max = nums.Max();</code></pre><button class="copy" data-copy="var max = nums.Max();">COPY</button></div><p>Maximum value.</p></article><article class="card" data-search="useful one-liners var longest = items.maxby(x => x.length); find longest string on modern .net."><div class="cmdrow"><pre><code>var longest = items.MaxBy(x => x.Length);</code></pre><button class="copy" data-copy="var longest = items.MaxBy(x => x.Length);">COPY</button></div><p>Find longest string on modern .NET.</p></article><article class="card" data-search="useful one-liners var lookup = items.todictionary(x => x.id); index objects by id."><div class="cmdrow"><pre><code>var lookup = items.ToDictionary(x => x.Id);</code></pre><button class="copy" data-copy="var lookup = items.ToDictionary(x => x.Id);">COPY</button></div><p>Index objects by ID.</p></article><article class="card" data-search="useful one-liners var grouped = items.groupby(x => x.category).todictionary(g => g.key, g => g.tolist()); group into a dictionary."><div class="cmdrow"><pre><code>var grouped = items.GroupBy(x => x.Category).ToDictionary(g => g.Key, g => g.ToList());</code></pre><button class="copy" data-copy="var grouped = items.GroupBy(x => x.Category).ToDictionary(g => g.Key, g => g.ToList());">COPY</button></div><p>Group into a dictionary.</p></article><article class="card" data-search="useful one-liners var counts = items.groupby(x => x).todictionary(g => g.key, g => g.count()); count repeated values."><div class="cmdrow"><pre><code>var counts = items.GroupBy(x => x).ToDictionary(g => g.Key, g => g.Count());</code></pre><button class="copy" data-copy="var counts = items.GroupBy(x => x).ToDictionary(g => g.Key, g => g.Count());">COPY</button></div><p>Count repeated values.</p></article><article class="card" data-search="useful one-liners var flat = matrix.selectmany(x => x).tolist(); flatten nested sequences."><div class="cmdrow"><pre><code>var flat = matrix.SelectMany(x => x).ToList();</code></pre><button class="copy" data-copy="var flat = matrix.SelectMany(x => x).ToList();">COPY</button></div><p>Flatten nested sequences.</p></article><article class="card" data-search="useful one-liners var clone = jsonserializer.deserialize<mytype>(jsonserializer.serialize(obj)); simple json round-trip clone for compatible types."><div class="cmdrow"><pre><code>var clone = JsonSerializer.Deserialize<MyType>(JsonSerializer.Serialize(obj));</code></pre><button class="copy" data-copy="var clone = JsonSerializer.Deserialize<MyType>(JsonSerializer.Serialize(obj));">COPY</button></div><p>Simple JSON round-trip clone for compatible types.</p></article><article class="card" data-search="useful one-liners var text = string.join(" ", input.split((char[]?)null, stringsplitoptions.removeemptyentries)); normalize repeated whitespace."><div class="cmdrow"><pre><code>var text = string.Join(" ", input.Split((char[]?)null, StringSplitOptions.RemoveEmptyEntries));</code></pre><button class="copy" data-copy="var text = string.Join(" ", input.Split((char[]?)null, StringSplitOptions.RemoveEmptyEntries));">COPY</button></div><p>Normalize repeated whitespace.</p></article><article class="card" data-search="useful one-liners var first = items.firstordefault(predicate); get first match or default."><div class="cmdrow"><pre><code>var first = items.FirstOrDefault(predicate);</code></pre><button class="copy" data-copy="var first = items.FirstOrDefault(predicate);">COPY</button></div><p>Get first match or default.</p></article></div></div></section><section class="section" id="common-pitfalls"><button class="sectionhead" aria-expanded="true"><span>Common Pitfalls</span><small>10 snippets</small><b>▾</b></button><div class="body"><div class="grid"><article class="card" data-search="common pitfalls referenceequals(a, b) checks whether two references point to the same object, not logical equality."><div class="cmdrow"><pre><code>ReferenceEquals(a, b)</code></pre><button class="copy" data-copy="ReferenceEquals(a, b)">COPY</button></div><p>Checks whether two references point to the same object, not logical equality.</p></article><article class="card" data-search="common pitfalls == on custom classes behavior depends on whether the type overloads equality; often use equals for semantic comparison."><div class="cmdrow"><pre><code>== on custom classes</code></pre><button class="copy" data-copy="== on custom classes">COPY</button></div><p>Behavior depends on whether the type overloads equality; often use Equals for semantic comparison.</p></article><article class="card" data-search="common pitfalls async void avoid except for event handlers because callers cannot await it."><div class="cmdrow"><pre><code>async void</code></pre><button class="copy" data-copy="async void">COPY</button></div><p>Avoid except for event handlers because callers cannot await it.</p></article><article class="card" data-search="common pitfalls task.result / task.wait() can block threads and may deadlock in some contexts; prefer await."><div class="cmdrow"><pre><code>Task.Result / Task.Wait()</code></pre><button class="copy" data-copy="Task.Result / Task.Wait()">COPY</button></div><p>Can block threads and may deadlock in some contexts; prefer await.</p></article><article class="card" data-search="common pitfalls new httpclient() per request repeated creation can exhaust sockets; prefer reuse or ihttpclientfactory."><div class="cmdrow"><pre><code>new HttpClient() per request</code></pre><button class="copy" data-copy="new HttpClient() per request">COPY</button></div><p>Repeated creation can exhaust sockets; prefer reuse or IHttpClientFactory.</p></article><article class="card" data-search="common pitfalls list<t> from multiple threads list<t> is not thread-safe for concurrent mutation."><div class="cmdrow"><pre><code>List<T> from multiple threads</code></pre><button class="copy" data-copy="List<T> from multiple threads">COPY</button></div><p>List<T> is not thread-safe for concurrent mutation.</p></article><article class="card" data-search="common pitfalls catch (exception) { } avoid swallowing exceptions without handling or logging."><div class="cmdrow"><pre><code>catch (Exception) { }</code></pre><button class="copy" data-copy="catch (Exception) { }">COPY</button></div><p>Avoid swallowing exceptions without handling or logging.</p></article><article class="card" data-search="common pitfalls gc.collect() manual garbage collection is usually counterproductive."><div class="cmdrow"><pre><code>GC.Collect()</code></pre><button class="copy" data-copy="GC.Collect()">COPY</button></div><p>Manual garbage collection is usually counterproductive.</p></article><article class="card" data-search="common pitfalls datetime.now for distributed timestamps prefer utc or datetimeoffset for cross-system timestamps."><div class="cmdrow"><pre><code>DateTime.Now for distributed timestamps</code></pre><button class="copy" data-copy="DateTime.Now for distributed timestamps">COPY</button></div><p>Prefer UTC or DateTimeOffset for cross-system timestamps.</p></article><article class="card" data-search="common pitfalls float/double for money prefer decimal for exact base-10 financial calculations."><div class="cmdrow"><pre><code>float/double for money</code></pre><button class="copy" data-copy="float/double for money">COPY</button></div><p>Prefer decimal for exact base-10 financial calculations.</p></article></div></div></section></main> |
| 62 | </div> |
| 63 | |
| 64 | <footer>C# / .NET Cheat Sheet • Modern C# + .NET + ASP.NET Core coverage • Search and copy controls run locally in your browser.</footer> |
| 65 | |
| 66 | <script> |
| 67 | const q=document.getElementById('search'); |
| 68 | const cards=[...document.querySelectorAll('.card')]; |
| 69 | const sections=[...document.querySelectorAll('.section')]; |
| 70 | |
| 71 | q.addEventListener('input',()=>{ |
| 72 | const s=q.value.trim().toLowerCase(); |
| 73 | cards.forEach(c=>c.classList.toggle('hidden',s&&!c.dataset.search.includes(s))); |
| 74 | sections.forEach(sec=>{ |
| 75 | const visible=sec.querySelectorAll('.card:not(.hidden)').length; |
| 76 | sec.classList.toggle('hidden',s&&visible===0); |
| 77 | if(s&&visible)sec.classList.remove('collapsed'); |
| 78 | }); |
| 79 | }); |
| 80 | |
| 81 | document.querySelectorAll('.sectionhead').forEach(b=>b.onclick=()=>{ |
| 82 | const sec=b.closest('.section'); |
| 83 | sec.classList.toggle('collapsed'); |
| 84 | b.setAttribute('aria-expanded',String(!sec.classList.contains('collapsed'))); |
| 85 | }); |
| 86 | document.getElementById('expand').onclick=()=>sections.forEach(s=>s.classList.remove('collapsed')); |
| 87 | document.getElementById('collapse').onclick=()=>sections.forEach(s=>s.classList.add('collapsed')); |
| 88 | |
| 89 | document.addEventListener('click',async e=>{ |
| 90 | const b=e.target.closest('.copy'); if(!b) return; |
| 91 | try{ |
| 92 | await navigator.clipboard.writeText(b.dataset.copy); |
| 93 | b.textContent='COPIED'; |
| 94 | setTimeout(()=>b.textContent='COPY',800); |
| 95 | }catch{ |
| 96 | b.textContent='SELECT'; |
| 97 | setTimeout(()=>b.textContent='COPY',800); |
| 98 | } |
| 99 | }); |
| 100 | </script> |
| 101 | </body> |
| 102 | </html> |
Revision de87bc22f0082189a51f01eba1a0e6381854680f