0 Tage Serie
Code-Bibliothek

Code, der lesenswert ist.

Sorgfältig kuratierte Snippets — TypeScript, Python, Rust, Go und mehr. Jedes mit einer Zeile-für-Zeile-Erklärung, damit du Code so liest, wie die Leute ihn geschrieben haben.

3498 Snippets · 10 Sprachen
▶ Lernen starten
C# · MittelSnippet

Sammlungen filtern mit LINQ

LINQ (Language Integrated Query) bietet eine leistungsstarke, deklarative Möglichkeit, Sammlungen zu bearbeiten. Auf mittlerem Niveau werden mehrere Operatoren verkettet, um Daten effizient zu transformieren.

snippet.cs
csharp
1
2
3
4
5
var activeUsers = users
.Where(u => u.IsActive)
.OrderBy(u => u.LastName)
.Select(u => u.Email)
.ToList();
SyntaxBest Practices
C# · MittelSnippet

Asynchrone Programmierung mit Tasks

Die Verwendung von async/await ermöglicht es der Anwendung, während I/O-gebundener Operationen reaktionsfähig zu bleiben, indem die Kontrolle an den Aufrufer zurückgegeben wird, während auf den Abschluss des Tasks gewartet wird.

snippet.cs
csharp
1
2
3
4
5
6
public async Task<string> DownloadDataAsync(string url)
{
using var client = new HttpClient();
string result = await client.GetStringAsync(url);
return result.Trim();
}
Async & ConcurrencyPerformance
C# · MittelSnippet

Exception-Filterung mit 'when'

Exception-Filter ermöglichen es, eine Ausnahme nur dann abzufangen, wenn eine bestimmte Bedingung erfüllt ist. Dies ist sauberer als Abfangen und erneutes Werfen, da der Stack nicht unnötig abgebaut wird.

snippet.cs
csharp
1
2
3
4
5
6
7
8
try
{
PerformNetworkAction();
}
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.NotFound)
{
HandleMissingResource();
}
FehlerbehandlungBest Practices
C# · MittelSnippet

Unveränderlichkeit mit C# Records

Records sind Referenztypen, die integrierte Funktionen zur Kapselung von Daten bieten. Sie verwenden wertebasierte Gleichheit und unterstützen zerstörungsfreie Mutation über den 'with'-Ausdruck.

snippet.cs
csharp
1
2
3
4
public record Product(string Id, string Name, decimal Price);
var original = new Product("A1", "Laptop", 999.99m);
var discount = original with { Price = 899.99m };
DatentypenOOP
C# · MittelSnippet

Pattern Matching Switch-Ausdrücke

Switch-Ausdrücke bieten eine prägnantere Syntax für Pattern Matching. Sie ermöglichen es, Objekteigenschaften direkt zu prüfen und einen Wert basierend auf dem ersten Treffer zurückzugeben.

snippet.cs
csharp
1
2
3
4
5
6
7
string priority = task switch
{
{ IsCompleted: true } => "None",
{ IsUrgent: true, DaysLeft: < 2 } => "Critical",
{ IsUrgent: true } => "High",
_ => "Standard"
};
SyntaxKontrollstrukturen
C# · MittelSnippet

Zugriff auf Objekte über eigene Indexer

Indexer ermöglichen es, Instanzen einer Klasse oder Struktur wie Arrays zu indizieren. Dies ist nützlich für Klassen, die eine Datensammlung darstellen oder Zugriff auf interne Puffer bieten.

snippet.cs
csharp
1
2
3
4
5
6
7
8
9
public class SimpleCache
{
private string[] _data = new string[10];
public string this[int index]
{
get => _data[index];
set => _data[index] = value;
}
}
OOPSyntax
C# · MittelSnippet

Deterministisches Bereinigen von Ressourcen mit IDisposable

Das IDisposable-Interface wird verwendet, um einen Mechanismus zum Freigeben nicht verwalteter Ressourcen bereitzustellen, wie z. B. Datei-Handles oder Datenbankverbindungen, die der Garbage Collector nicht automatisch verarbeiten kann.

snippet.cs
csharp
1
2
3
4
5
6
7
8
public class Logger : IDisposable
{
private StreamWriter _writer = new StreamWriter("log.txt");
public void Dispose()
{
_writer?.Dispose();
}
}
Memory ManagementBest Practices
C# · MittelSnippet

Erweitern bestehender Typen mit Erweiterungsmethoden

Erweiterungsmethoden ermöglichen es, Methoden zu bestehenden Typen 'hinzuzufügen', ohne einen neuen abgeleiteten Typ zu erstellen oder den Originaltyp zu ändern. Sie werden als statische Methoden in einer statischen Klasse definiert.

snippet.cs
csharp
1
2
3
4
5
6
7
public static class StringExtensions
{
public static int WordCount(this string str)
{
return str.Split(new[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;
}
}
SyntaxBest Practices