DateOnly ve TimeOnly TryParse yöntemleri geçersiz girdi için hata fırlatır.

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.

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