Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Metody DateOnly a TimeOnlyTryParseTryParseExact nyní vyvolávají ArgumentException, když jsou poskytnuty neplatné DateTimeStyles hodnoty nebo specifikátory formátu. Tím se zarovná jejich chování s jinými TryParse rozhraními API v .NET.
Verze byla představena
.NET 11 Preview 2
Předchozí chování
Dříve předávání neplatných DateTimeStyles hodnot nebo specifikátorů formátu DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParse nebo TimeOnly.TryParseExact způsobily, že se metody vrátily false bez vyvolání výjimky.
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
Nové chování
Počínaje rozhraním .NET 11, při předání neplatných hodnot DateTimeStyles nebo specifikátorů formátu těmto metodám je vyvolána výjimka ArgumentException. Výjimka obsahuje podrobnosti o neplatném argumentu, například název 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 zásadní změny
Tato změna je změna chování.
Důvod změny
Tato změna sjednocuje chování metod parsování DateOnly a TimeOnly s jinými rozhraními API TryParse v .NET, která vyvolávají výjimky pro neplatné argumenty. Předchozí chování bezobslužného vrácení false neplatných argumentů by mohlo maskovat chyby programování a ztěžovat ladění.
Doporučená akce
Zkontrolujte své použití DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParse a TimeOnly.TryParseExact a ujistěte se, že jsou předány platné hodnoty a specifikátory formátu DateTimeStyles. Pokud jsou ve vašich cestách kódu možné neplatné argumenty, zabalte volání do bloku try-catch pro zpracování 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
}
Ovlivněná rozhraní API
- 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)