BCL ·
Collections ·
IO / FileSystem ·
Reflection ·
Garbage Collection ·
LINQ
Das .NET Framework bietet eine riesige Klassenbibliothek für nahezu alle Programmieraufgaben. Diese Bereiche sind essenziell für die professionelle C#-Entwicklung.
Base Class Library (BCL) ist die grundlegende Klassenbibliothek von .NET. Sie enthält die wichtigsten Typen für die tägliche Programmierung: primitive Typen, Strings, Collections, IO, Threading und mehr.
| Namespace | Wichtige Typen | Beschreibung |
|---|---|---|
| System | String, DateTime, Console | Basistypen und Ein-/Ausgabe |
| System.Text | StringBuilder, Encoding | Textverarbeitung, Codierung |
| System.Collections | ArrayList, Hashtable (veraltet) | Legacy Collections |
| System.Collections.Generic | List<T>, Dictionary<TKey,TValue> | Generische Collections |
| System.Linq | Enumerable, Queryable | LINQ-Erweiterungen |
| System.Threading | Task, Thread, CancellationToken | Multithreading |
StringBuilder für viele Zeichenketten-Operationen in Schleifen – das ist deutlich effizienter als string += ....
Collections sind Datenstrukturen zum Speichern und Verwalten von Objekten. Die generischen Collections im System.Collections.Generic-Namespace sind typsicher und performant.
| Collection | Beschreibung | Wichtige Methoden |
|---|---|---|
| List<T> | Dynamisch wachsende Liste | Add, Remove, Insert, Sort, Find |
| Dictionary<K,V> | Schlüssel-Wert-Sammlung | Add, TryGetValue, ContainsKey, Remove |
| HashSet<T> | Menge eindeutiger Elemente | Add, Contains, UnionWith, IntersectWith |
| Queue<T> | FIFO-Warteschlange | Enqueue, Dequeue, Peek |
| Stack<T> | LIFO-Stapel | Push, Pop, Peek |
| LinkedList<T> | Doppelt verkettete Liste | AddFirst, AddLast, Find, Remove |
Dictionary.TryGetValue() statt Dictionary[key], um KeyNotFoundException zu vermeiden.
IO ermöglicht den Zugriff auf das Dateisystem. Die Klassen File, Directory, FileStream und StreamReader bieten umfangreiche Funktionen für Dateioperationen.
| Klasse | Beschreibung | Wichtige Methoden |
|---|---|---|
| File | Statische Methoden für Dateien | ReadAllText, WriteAllText, Copy, Delete, Exists |
| Directory | Statische Methoden für Verzeichnisse | CreateDirectory, GetFiles, GetDirectories, Exists |
| FileStream | Stream für Datei-I/O | Read, Write, Seek, Flush |
| StreamReader / StreamWriter | Textbasierte Streams | ReadLine, WriteLine, ReadToEnd |
| Path | Pfad-Operationen | Combine, GetFileName, GetExtension, GetDirectoryName |
using-Blöcke für StreamReader und StreamWriter, um Ressourcen automatisch freizugeben.
Reflection ermöglicht die Untersuchung und Manipulation von Typen zur Laufzeit. Sie wird für Dependency Injection, Serialisierung, Testing und dynamische Codegenerierung verwendet.
Garbage Collection verwaltet automatisch den Speicher für verwaltete Objekte. IDisposable wird für Ressourcen verwendet, die explizit freigegeben werden müssen (z.B. Dateien, Datenbankverbindungen).
| Generation | Beschreibung |
|---|---|
| Gen 0 | Kurzlebige Objekte (wird oft gesammelt) |
| Gen 1 | Übergangsphase zwischen kurz- und langlebig |
| Gen 2 | Langlebige Objekte (wird selten gesammelt) |
| Large Object Heap | Objekte > 85 KB (separat verwaltet) |
GC.Collect() nur in Ausnahmefällen auf – der GC optimiert sich selbst. Implementieren Sie IDisposable für alle Ressourcen, die nicht verwaltet werden (Dateien, Sockets, etc.).
LINQ (Language Integrated Query) ermöglicht deklarative Datenabfragen auf Collections, Datenbanken, XML und mehr. Es gibt zwei Syntaxvarianten: Query-Syntax und Method-Syntax.
| Operator | Beschreibung | Beispiel |
|---|---|---|
| Where | Filtert Elemente | .Where(x => x > 10) |
| Select | Projiziert Elemente | .Select(x => x * 2) |
| OrderBy / OrderByDescending | Sortiert Elemente | .OrderBy(x => x.Name) |
| GroupBy | Gruppiert Elemente | .GroupBy(x => x.Category) |
| First / FirstOrDefault | Erstes Element | .First(x => x > 5) |
| Any / All | Prüft Bedingungen | .Any(x => x > 0) |
| Count / Sum / Average | Aggregationen | .Sum(x => x.Price) |
| Join | Verknüpft zwei Collections | .Join(orders, ...) |
.ToList() oder .ToArray(), um die Abfrage sofort auszuführen.
System
List
File
Type
IDisposable
LINQ
using System.IO; ·
var list = new List<int>(); ·
var result = data.Where(x => x > 0).Select(x => x * 2);