ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Microsoft ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΎΡΠ²ΠΎΡΠ΅Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° .NET 9, ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° ΡΡΠ΅Π· ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ .NET Framework, .NET Core ΠΈ Mono. ΠΠ° Π±Π°Π·Π°ΡΠ° Π½Π° .NET 9 ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° Π±ΡΠ°ΡΠ·ΡΡΠΈ, ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π΄Π΅ΡΠΊΡΠΎΠΏ, IoT ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π΅Π΄ΠΈΠ½Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΎΠ±Ρ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΈΠΏΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈΡΠ΅ .NET SDK 9, .NET Runtime 9 ΠΈ ASP.NET Core Runtime 9 ΡΠ° ΡΠΎΡΠΌΠΈΡΠ°Π½ΠΈ Π·Π° Linux, macOS ΠΈ Windows. .NET Desktop Runtime 9 ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°ΠΌΠΎ Π·Π° Windows. Π‘Π²ΡΡΠ·Π°Π½ΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Ρ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· MIT.
.NET Π²ΠΊΠ»ΡΡΠ²Π° Runtime Ρ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° RyuJIT, ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° API, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ WPF, Windows Forms, WinUI ΠΈ Entity Framework, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ dotnet, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΡΡΠ²ΡΡΠ½ΠΈ, Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΠΈ ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ΄Π΅Π»Π½ΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ΅ΠΊ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ASP.NET Core 9.0, ORM ΡΠ»ΠΎΠΉ Entity Framework Core 9.0 (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΄ΡΠ°ΠΉΠ²ΡΡΠΈ Π·Π° SQLite ΠΈ PostgreSQL), Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° WPF 9 (Windows Presentation Foundation), ΡΡΠ΅ΠΉΠΌΡΡΡΠΊ Windows Forms 9 Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° GUI, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Aspire 9 Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Cloud Native ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠ΅ΠΉΠΌΡΡΡΠΊ MAUI 9 Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π΅Π·ΠΈΡΠΈΡΠ΅ C# 13 ΠΈ F# 9. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° .NET 9.0 ΠΈ C# 13 Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π½Π° ΠΊΠΎΠ΄ Visual Studio Code.
Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:
- ΠΠ½Π΅ΡΠ΅Π½ΠΈ ΡΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Ρ
ΠΈΠ»ΡΠ΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄. ΠΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ ΡΡΠ±ΠΈΡΠ°ΡΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, Π² ΠΊΠΎΠ΅ΡΠΎ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°Π½ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π° Π°Π΄Π°ΠΏΡΠ°ΡΠΈΡ ΠΊΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ (ΡΡΠ±ΠΈΡΠ°ΡΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π΅ ΠΏΡΠΈΠ²ΡΡΠ·Π°Π½ΠΎ Π½Π΅ ΠΊΡΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, Π° ΠΊΡΠΌ ΡΠΎΠ²Π°, ΠΊΠΎΠ»ΠΊΠΎ ΠΏΠ°ΠΌΠ΅Ρ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ). ΠΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΄ΡΠ°, Π°ΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠ°ΠΌΠ΅Ρ ΠΈΠ»ΠΈ Π°ΠΊΠΎ Π½ΡΠΆΠ΄Π°ΡΠ° ΠΎΡ ΠΏΠ°ΠΌΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°.
Π JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ (PGO), ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠΊΠ»ΠΈ, inline ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π³ΡΠ°Π½ΠΈΡΠΈ. Π .NET runtime Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Arm64 SVE ΠΈ Intel AVX10. ΠΠΎΠ΄ΡΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΅ ΡΡΠΊΠΎΡΠ΅Π½ Ρ 50%. ΠΠ° ΠΊΠΎΠ΄ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΡΠΈΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Β«(IFoo)myFooΒ» ΠΈ Β«myFoo is IFooΒ», Π΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π΄ΠΎ 70%. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π½ΡΠΊΠΎΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π² Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ LINQ (Language-Integrated Query), ΠΊΠ°ΡΠΎ Take ΠΈ DefaultIfEmpty, Π΅ Π½Π°ΡΠ°ΡΠ½Π°Π»Π° Π΄ΠΎ 10 ΠΏΡΡΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΡΠ°Π·Π½ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ.
ΠΠ½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° System.Text.Json. Π ΠΌΠ΅ΡΠΎΠ΄Π° JsonProperty.WriteTo Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° UTF8 Π½ΠΈΠ·ΠΎΠ²Π΅, ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°ΡΠ° ΠΈΠ·Π»ΠΈΡΠ½ΠΎ Π·Π°Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ ΠΏΠΎ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° JsonObject. ΠΡΠΈ ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΎΠ²Π΅ TechEmpower, ΠΎΡΠ΅Π½ΡΠ²Π°ΡΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ΄Π° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° JSON Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ .NET 8 Π΅ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Ρ 15% ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Ρ 93%.
- Π Runtime Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π½ΠΎΠ²Π° ΠΌΠΎΠ΄Π΅Π»Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈΠΊΠ° Π·Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠΈΡΠ΅ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅.
- Π Π΅Π·ΠΈΠΊΠ° C# 13 ΡΠ° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Β«paramsΒ», ΠΊΠ°ΡΠΎ ΠΎΡΠ²Π΅Π½ ΠΌΠ°ΡΠΈΠ²ΠΈ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ. ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΌΠ°ΡΠΈΠ²ΠΈ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Β«^Β» Π·Π° ΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΎΡ ΠΊΡΠ°Ρ Π½Π° ΠΌΠ°ΡΠΈΠ²Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«buffer = { [^1] = 0, [^2] = 1,β¦.}Β» ΡΠ΅ Π·Π°ΠΏΠΈΡΠ΅ 0 Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΈ 1 Π² ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ). Π ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ·ΡΠ°Π·ΠΈ ref ΠΈ unsafe. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½ΠΎΠ²Π° escape ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ Β«\eΒ». Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ Β«ref structΒ» ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΈΠΌ ΠΊΠ°ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π² ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ Π½ΠΎΠ² ΡΠΈΠΏ Lock Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Lock myLock = new(); void Concat<T>(params List<T> items) { lock (myLock) Console.WriteLine(string.Join(Β«\e[1mItem: \e[0mΒ», items)); }
- Π Π΅Π·ΠΈΠΊΠ° F# 9 Π±Π΅ Π²ΡΠ²Π΅Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ°Ρ null ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ. Π ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡΠ° ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° β.Is*β (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, person.contact.IsEmail), ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΊΡΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠ°Π·Π½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ (βlet xs = seq { }β). Π Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π·Π°ΠΏΠΎΡΠ²Π°Ρ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° β#β, Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅ΡΡΡΠΎΠΊΠΎΠ²ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (Π½Π°ΠΏΡ. ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΈΡΠ΅ #nowarn 0070 Π²ΠΌΠ΅ΡΡΠΎ #nowarn "0070"). Π ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ List, Array ΠΈ Seq ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΈΠ·Π±ΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΡΠ°Π·Π±ΡΡΠΊΠ²Π°Π½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ. ΠΠ° ΡΠΏΠΈΡΡΡΠΈΡΠ΅ (list ΠΈ set) Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ.
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΡΠ΅ΠΊ .NET Aspire, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π² ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ. ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΠΈ ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡ.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ Π½ΠΎΠ² Π½Π°Π±ΠΎΡ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π° C# Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° AI ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π΅Π·ΠΈΠΊΠΎΠ²ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ AI ΡΡΠ»ΡΠ³ΠΈ. ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π΅ Π½ΠΎΠ² ΡΠΈΠΏ βTensorβ ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΡΡΠ° Π·Π° AI ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Ρ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ System.Numerics.Tensors, Microsoft.Extensions.AI ΠΈ Microsoft.Extensions.VectorData. ΠΠ±Π½ΠΎΠ²Π΅Π½ Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΡΡ ML.NET, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Microsoft.ML.Tokenizers Π·Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡ Π² ΡΠΎΠΊΠ΅Π½ΠΈ.
- Π ΡΡΠ΅ΠΊΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° web ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ASP.NET Core Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ (ahead-of-time), ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΡΡΠ°ΡΠΈΡΠΎΠ²ΠΊΠ°, ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΎ Π΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΡΡ ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² API Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ. Π Blazor, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° web ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° C#, ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π½ΠΎΠ²ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ ΠΈ web ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° MAUI Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΠ·Π²ΡΡΡΠ΅Π½Π° Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. Π£ΠΊΡΠ΅ΠΏΠ΅Π½Π° Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° Ρ Π½Π°ΡΡΠΎΠ»Π½ΠΈ ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ TitleBar ΠΈ HybridWebView.
- Π WPF (Windows Presentation Foundation) Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠ΅ΠΌΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π°ΠΊΡΠ΅Π½ΡΠ½ΠΈ ΡΠ²Π΅ΡΠΎΠ²Π΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
