Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De DateOnly en TimeOnlyTryParse en TryParseExact methoden gooien nu een ArgumentException wanneer ongeldige DateTimeStyles waarden of notatieaanduidingen worden opgegeven. Hiermee wordt het gedrag afgestemd op andere TryParse API's in .NET.
Geïntroduceerde versie
.NET 11 Preview 2
Vorig gedrag
Voorheen zorgde het doorgeven van ongeldige DateTimeStyles-waarden of opmaakaanduidingen aan DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParse of TimeOnly.TryParseExact ervoor dat de methoden false teruggeven zonder een uitzondering te genereren.
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
Nieuw gedrag
Vanaf .NET 11 leidt het doorgeven van ongeldige DateTimeStyles waarden of opmaaknotaties aan deze methoden tot een ArgumentException. De uitzondering bevat details over het ongeldige argument, zoals de parameternaam.
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')"
}
Type van brekende verandering
Deze wijziging is een gedragswijziging.
Reden voor wijziging
Met deze wijziging wordt het gedrag van DateOnly en TimeOnly parseringsmethoden uitgelijnd met andere TryParse API's in .NET, waardoor uitzonderingen voor ongeldige argumenten worden veroorzaakt. Het vorige gedrag van het op de achtergrond retourneren false van ongeldige argumenten kan programmeerfouten maskeren en foutopsporing moeilijker maken.
Aanbevolen actie
Controleer uw gebruik van DateOnly.TryParse, DateOnly.TryParseExacten TimeOnly.TryParseTimeOnly.TryParseExact om ervoor te zorgen dat geldige DateTimeStyles waarden en notatieaanduidingen worden doorgegeven. Als er ongeldige argumenten mogelijk zijn in uw codepaden, verpakt u de aanroepen in een try-catch blok om ArgumentException te verwerken.
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
}
Betreffende API's
- 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)