Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Und die DateOnlyTimeOnlyTryParse Methoden TryParseExact lösen jetzt ein ArgumentException, wenn ungültige DateTimeStyles Werte oder Formatbezeichner bereitgestellt werden. Dadurch wird ihr Verhalten an anderen TryParse APIs in .NET ausgerichtet.
Eingeführt in Version
.NET 11 Preview 2
Bisheriges Verhalten
Zuvor führten ungültige DateTimeStyles-Werte oder Formatbezeichner bei DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParse oder TimeOnly.TryParseExact dazu, dass die Methoden false zurückgaben, ohne eine Ausnahme auszulösen.
using System;
using System.Globalization;
bool result = DateOnly.TryParseExact(
"2023-10-15",
"yyyy-MM-dd",
CultureInfo.InvariantCulture,
(DateTimeStyles)999, // Invalid DateTimeStyles value
out DateOnly date);
Console.WriteLine(result); // Output: False
Neues Verhalten
Ab .NET 11 wird beim Übergeben ungültiger DateTimeStyles Werte oder Formatbezeichner an diese Methoden eine ArgumentException ausgelöst. Die Ausnahme enthält Details zum ungültigen Argument, z. B. den Parameternamen.
using System;
using System.Globalization;
try
{
bool result = DateOnly.TryParseExact(
"2023-10-15",
"yyyy-MM-dd",
CultureInfo.InvariantCulture,
(DateTimeStyles)999, // Invalid DateTimeStyles value
out DateOnly date);
}
catch (ArgumentException ex)
{
Console.WriteLine(ex.Message);
// Output: "The value '999' is not valid for DateTimeStyles. (Parameter 'style')"
}
Art der einschneidenden Änderung
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Diese Änderung richtet das Verhalten von DateOnly Methoden und TimeOnly Analysemethoden an andere TryParse APIs in .NET aus, die Ausnahmen für ungültige Argumente auslösen. Das vorherige Verhalten der automatischen false Rückgabe für ungültige Argumente könnte Programmierfehler maskieren und das Debuggen erschweren.
Empfohlene Maßnahme
Überprüfen Sie die Verwendung von DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParse und TimeOnly.TryParseExact und stellen Sie sicher, dass gültige DateTimeStyles Werte und Formatbezeichner übergeben werden. Wenn ungültige Argumente in den Codepfaden möglich sind, sollten Sie die Aufrufe in einen try-catch-Block einschließen, um ArgumentException zu handhaben.
using System;
using System.Globalization;
try
{
bool result = DateOnly.TryParseExact(
"2023-10-15",
"yyyy-MM-dd",
CultureInfo.InvariantCulture,
(DateTimeStyles)999, // Invalid DateTimeStyles value
out DateOnly date);
}
catch (ArgumentException ex)
{
Console.WriteLine($"Error: {ex.Message}");
// Handle the exception as needed
}
Betroffene APIs
- System.DateOnly.TryParse(String, DateOnly)
- System.DateOnly.TryParse(String, IFormatProvider, DateTimeStyles, DateOnly)
- System.DateOnly.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateOnly)
- System.DateOnly.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateOnly)
- System.TimeOnly.TryParse(String, TimeOnly)
- System.TimeOnly.TryParse(String, IFormatProvider, DateTimeStyles, TimeOnly)
- System.TimeOnly.TryParseExact(String, String, IFormatProvider, DateTimeStyles, TimeOnly)
- System.TimeOnly.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, TimeOnly)