Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Metody DateOnly oraz TimeOnlyTryParseTryParseExact teraz zgłaszają ArgumentException, gdy zostaną podane nieprawidłowe DateTimeStyles wartości lub specyfikatory formatu. Jest to zgodne z zachowaniem innych API w .NET.
Wersja wprowadzona
.NET 11 (wersja zapoznawcza 2)
Poprzednie zachowanie
Wcześniej przekazywanie nieprawidłowych DateTimeStyles wartości lub specyfikatorów formatu do DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParse lub TimeOnly.TryParseExact powodowało, że metody zwracały false bez zgłaszania wyjątku.
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
Nowe zachowanie
Począwszy od platformy .NET 11, przekazywanie nieprawidłowych DateTimeStyles wartości lub specyfikatorów formatu do tych metod zgłasza błąd ArgumentException. Wyjątek zawiera szczegółowe informacje o nieprawidłowym argumencie, takim jak nazwa parametru.
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')"
}
Typ zmiany przełamującej
Ta zmiana jest zmianą behawioralną.
Przyczyna zmiany
Ta zmiana wyrównuje zachowanie metod analizujących DateOnly i TimeOnly z innymi API TryParse w .NET, które zgłaszają wyjątki dla nieprawidłowych argumentów. Poprzednie zachowanie dyskretnego zwracania false nieprawidłowych argumentów może maskować błędy programowania i utrudniać debugowanie.
Zalecana akcja
Przejrzyj użycie wartości DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParsei TimeOnly.TryParseExact , aby upewnić się, że przekazywane są prawidłowe DateTimeStyles wartości i specyfikatory formatu. Jeśli w ścieżkach kodu są możliwe nieprawidłowe argumenty, opakuj wywołania w blok try-catch, aby obsłużyć ArgumentException.
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
}
Interfejsy API, których dotyczy problem
- 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)