Neu in .NET 9.0 [31]: Verbesserte Ausgabe bei Debug.Assert()

Beim Fehlschlagen der ĂĽbergebenen Bedingung zeigt .NET 9.0 diese in der Ausgabe komplett an.

vorlesen Druckansicht
Verkehrsschild mit Aufschrift .NET

(Bild: Pincasso/Shutterstock.com)

Lesezeit: 1 Min.
Von
  • Dr. Holger Schwichtenberg

Die altbekannte Methode Debug.Assert() bietet eine kleine Verbesserung in .NET 9.0: Beim Fehlschlagen der ĂĽbergebenen Bedingung sehen Entwicklerinnen und Entwickler in der Ausgabe die komplette fehlgeschlagene Bedingung.

Videos by heise

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.

So kam beispielsweise bei

var x = 42;
var y = 42;
…
Debug.Assert(x > 0 && y < 0);

vor .NET 9.0 diese Nachricht:

Assertion failed.
at Program.SomeMethod(Int32 a, Int32 b)

Nun sehen Entwicklerinnen und Entwickler seit .NET 9.0 eine ausfĂĽhrlichere Information:

Assertion failed.
x > 0 && y < 0
at Program.SomeMethod(Int32 a, Int32 b)

Damit dies funktioniert, gibt es eine neue Ăśberladung der Methode Debug.Assert() mit der Annotation [CallerArgumentExpression] vor dem zweiten Parameter:

public static void Assert([DoesNotReturnIf(false)] bool condition, 
  [CallerArgumentExpression("condition")] string? message = null);

Vor .NET 9.0 konnte man dies nur erreichen, indem man die Bedingung noch einmal explizit als Zeichenkette angab:

Debug.Assert(x > 0 && y < 0, "x > 0 && y < 0");

(rme)