Neu in .NET 9.0 [20]: Erweiterte Nutzung von System.ReadOnlySpan<T>

In .NET 9.0 kommt die Speicherallokationen vermeidende Klasse System.ReadOnlySpan<T> an weiteren Stellen in der .NET-Basisklassenbibliothek zum Einsatz.

vorlesen Druckansicht

(Bild: Pincasso/Shutterstock.com)

Lesezeit: 1 Min.
Von
  • Dr. Holger Schwichtenberg

Die Klasse System.ReadOnlySpan<T>, die Speicherallokationen vermeidet, kommt in .NET 9.0 an weiteren Stellen in der .NET-Basisklassenbibliothek zum Einsatz:

Der Dotnet-Doktor – Holger Schwichtenberg
Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

  • Microsoft hat zahlreiche Klassen aus der .NET-Klassenbibliothek, die Parameter-Arrays entgegennehmen, darunter Format(), String.Join(), Console.WriteLine() und APIs im Namensraum System.Drawing, mit zusätzlichen MethodenĂĽberladungen fĂĽr ReadOnlySpan<T> ausgestattet. Dies vermeidet die bei Arrays ĂĽblichen, langsameren impliziten Heap-Allokationen, da ReadOnlySpan<T> auf dem Stack lebt.
  • Die Klasse Regex bietet nun eine Methode EnumerateSplits().
  • In der IO.File-Klasse können Entwicklerinnen und Entwickler nun direkt mit WriteAllText() Zeichenketten in Form von ReadOnlySpan<char> persistieren.
  • Analog gibt es bei WriteAllBytes() eine neue Ăśberladung fĂĽr Bytefolgen, die als ReadOnlySpan<byte> vorliegen.
  • ReadOnlySpan<T> bietet nun die Methoden StartsWith() und EndsWith(), genau wie die Klasse String.

Videos by heise

Folgender Code zeigt die neuen Einsatzgebiete fĂĽr System.ReadOnlySpan<T>:

namespace NET9_Console.FCL90;

internal class FCL9_Spans
{

 public void Run()
 {
  CUI.Demo(nameof(FCL9_Spans));

  string path1 = @"c:\temp\info.txt";
  string path2 = @"c:\temp\info.bin";
  ReadOnlySpan<char> text = ".NET 9.0 erscheint als Nachfolger von .NET 8.0 im November 2024!";

  if (text.StartsWith(".NET") && text.EndsWith("!"))
  {
   File.WriteAllText(path1, text);
   CUI.Success("Gespeichert in " + path1);

   ReadOnlySpan<byte> bytes = Encoding.UTF8.GetBytes(text.ToString());
   File.WriteAllBytes(path2, bytes);
   CUI.Success("Gespeichert in " + path2);
  }
 }
Heise-Konferenz: betterCode() .NET 10.0 am 18. November
Online-Konferenz betterCode() 10.0 am 18. November 2025

(Bild: coffeemill/123rf.com)

Das nächste LTS-Release steht an: Auf der Online-Konferenz betterCode() .NET 10.0 am 18. November 2025 – ausgerichtet von iX und dpunkt.verlag in Kooperation mit IT-visions.de – präsentieren der Autor dieses Artikels, Dr. Holger Schwichtenberg, und weitere Experten die wichtigsten Neuerungen. Dazu zählen die Updates im .NET 10.0 SDK sowie in C# 14.0, ASP.NET Core 10.0, Blazor 10.0, Windows Forms 10.0, WPF 10.0, WinUI 3, .NET MAUI 10.0 und die Integration von Künstlicher Intelligenz in .NET-Anwendungen.

Das Programm ist noch nicht veröffentlicht – bis dahin sind vergünstigte Blind-Bird-Tickets bereits im Online-Shop erhältlich. Das Vorjahresprogramm lässt sich im Archiv einsehen.

(rme)