# C# Workshop
## C# Neuerungen
* [Slides C# 11](https://slides.com/rainerstropek/csharp-11/fullscreen)
* [Slides C# 12](https://slides.com/rainerstropek/c-12/fullscreen)
## Container
* [Slides](https://slides.com/rainerstropek/net-7-intro/fullscreen#/3)
* [Sample](https://github.com/rstropek/Samples/tree/master/DotNet7/0010-Centralized-Package-Management)
## .NET unter Linux vs. Windows
* [Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/)
* [VSCode Remote Development](https://code.visualstudio.com/docs/remote/remote-overview)
* [WSL Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl)
* [.NET TFMs](https://learn.microsoft.com/en-us/dotnet/standard/frameworks#net-5-os-specific-tfms)
## GitHub Copilot
* [Slides](https://slides.com/rainerstropek/dev-with-github-copilot/fullscreen)
## ASP.NET Core Minimal API
* [Todo App David](https://github.com/davidfowl/TodoApi/tree/davidfowl/net8)
* [UNO](https://github.com/rstropek/uno-coderdojo/)
## .NET on ARM
* .NET is supported for ARM32 and ARM64
* Support for ARM32 [will **not** be dropped](https://github.com/dotnet/runtime/discussions/71042#discussioncomment-6745103)
* Get .NET for ARM32 and ARM64 from [dotnet.microsoft.com](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
* [Multi-Platform Container Support](https://devblogs.microsoft.com/dotnet/improving-multiplatform-container-support/)
* [Limited cross-compilation](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/cross-compile)
## Live Samples
### Record Recap
```csharp
var g = new Greetee("John");
g = g with { Name = "Jane" };
g.FirstName = "Foo";
var g2 = new Greetee("Jane");
g2.FirstName = "Foo";
if (g == g2)
{
System.Console.WriteLine("Equal");
}
var gc = new GreeteeClass() { Name = "Foo", FirstName = "Bar" };
var gc2 = new GreeteeClass() { Name = "Foo", FirstName = "Bar" };
if (gc == gc2)
{
System.Console.WriteLine("Equal");
}
record Greetee(string Name)
{
public string FirstName { get; set; } = "";
}
class GreeteeClass
{
public string FirstName { get; set; } = "";
public string Name { get; set; } = "";
}
```