Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
DateOnly ve TimeOnlyTryParseTryParseExact yöntemleri, geçersiz DateTimeStyles değerleri veya biçim tanımlayıcıları sağlandığında artık bir ArgumentException fırlatır. Bu, davranışlarını .NET'teki diğer TryParse API'lerle hizalar.
Sürüm kullanıma sunulmuştur
.NET 11 Preview 2
Önceki davranış
Daha önce, geçersiz DateTimeStyles değerlerin veya biçim tanımlayıcılarının DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParse veya TimeOnly.TryParseExact yöntemlerine aktarılması, özel durum oluşturmadan false döndürülmesine neden oluyordu.
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
Yeni davranış
.NET 11'den başlayarak, bu yöntemlere geçersiz DateTimeStyles değerler veya biçim tanımlayıcıları geçirilmesi bir ArgumentException hatası fırlatır. Özel durum, parametre adı gibi geçersiz bağımsız değişkenle ilgili ayrıntıları içerir.
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')"
}
Kesinti yaratan değişiklik türü
Bu değişiklik davranışsal bir değişikliktir.
Değişiklik nedeni
Bu değişiklik, yöntemlerin DateOnly davranışını ve TimeOnly ayrıştırma yöntemlerini geçersiz bağımsız değişkenler için özel durumlar oluşturan .NET'teki diğer TryParse API'lerle hizalar. Geçersiz bağımsız değişkenler için false değerinin sessizce döndürülmesi, önceki davranış olarak programlama hatalarını gizleyebilir ve hata ayıklamayı zorlaştırabilir.
Önerilen eylem
Kullanımınızı gözden geçirerek, geçerli DateTimeStyles değerlerinin ve biçim tanımlayıcılarının DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParse ve TimeOnly.TryParseExact üzerinden geçtiğinden emin olun. Kod yollarınızda geçersiz bağımsız değişkenler mümkünse, çağrıları işleme almak için bir try-catchArgumentException blokta sarmalayın.
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
}
Etkilenen API'ler
- 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)