version 4.0 - 13.0 (AI generated)

This commit is contained in:
jonas@geiger-natur.de
2025-09-28 17:52:30 +02:00
parent 90c5e758ff
commit 164f956c01
14 changed files with 927 additions and 0 deletions

74
Version9.0/README.md Normal file
View File

@@ -0,0 +1,74 @@
# C# Version 9.0
Veröffentlicht im November 2020 mit .NET 5.
## Neue Features
### Datensätze (`record`)
Kompakte Syntax für unveränderliche Datencontainer mit Wertsemantik.
```csharp
public record Person(string Name, int Alter);
var p1 = new Person("Jonas", 30);
var p2 = p1 with { Alter = 31 };
```
### init-only-Setter
Eigenschaften können nur bei der Initialisierung gesetzt werden.
```csharp
public class Auto
{
public string Marke { get; init; }
}
```
### Top-Level-Anweisungen
Kein `Main`-Methoden- oder Klassen-Wrapper nötig.
```csharp
Console.WriteLine("Hallo Welt!");
```
### Verbesserter Musterabgleich
- **Relationale Muster:** `<`, `>`, `<=`, `>=`
- **Logische Muster:** `and`, `or`, `not`
```csharp
if (wert is >= 0 and <= 10) { /* ... */ }
if (obj is not null) { /* ... */ }
```
### Integerwerte mit nativer Größe
`nint` und `nuint` für CPU-native Integer.
```csharp
nint x = 42;
```
### Funktionszeiger
Direkte Zeiger auf Funktionen.
```csharp
delegate*<int, int, int> addPtr = &Add;
```
### Modulinitialisierer
Methoden, die beim Laden einer Assembly ausgeführt werden.
```csharp
[ModuleInitializer]
public static void Init() { /* ... */ }
```
### Weitere Features
- Zieltypisierte `new`-Ausdrücke: `List<int> zahlen = new();`
- Anonyme `static`-Funktionen: `static () => 42`
- Lambda-Parameter verwerfen: `_ => ...`
- Attribute auf lokale Funktionen
- Erweiterung von `GetEnumerator()` für `foreach`
- Partielle Methoden mit Rückgabewert und Zugriffsmodifizierer
---
C# 9.0 bringt viele moderne Features für produktiven, kompakten und sicheren Code.