Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Metoderna DateOnly och TimeOnlyTryParseTryParseExact genererar nu en ArgumentException när ogiltiga DateTimeStyles värden eller formatspecificerare anges. Detta justerar deras beteende med andra TryParse API:er i .NET.
Version lanserad
.NET 11 Förhandsversion 2
Tidigare beteende
Tidigare skickade ogiltiga DateTimeStyles värden eller formatspecificerare till DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParseeller TimeOnly.TryParseExact fick metoderna att returnera false utan att utlösa ett undantag.
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
Nytt beteende
Från och med .NET 11 genererar överföring av ogiltiga DateTimeStyles värden eller formatspecificerare till dessa metoder en ArgumentException. Undantaget innehåller information om det ogiltiga argumentet, till exempel parameternamnet.
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 av brytande ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Den här ändringen justerar beteendet för DateOnly och TimeOnly-parsningsmetoderna till andra TryParse-API:er i .NET, som utlöser undantag för ogiltiga argument. Det tidigare beteendet att false tyst returnera för ogiltiga argument kan maskera programmeringsfel och göra felsökning svårare.
Rekommenderad åtgärd
Granska din användning av DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParseoch TimeOnly.TryParseExact för att säkerställa att giltiga DateTimeStyles värden och formatspecificerare skickas. Om det finns risk för ogiltiga argument i dina kodvägar, omslut anropen i ett try-catch-block för att hantera 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
}
Berörda API:er
- 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)