Genelleştirme sabit modunda kültür oluşturma ve büyük/küçük harf eşleme

Bu hataya neden olan değişiklik, genelleştirme sabit modunu iki şekilde etkiler:

  • Daha önce .NET, kültür adı BCP-47 ile uyumlu olduğu sürece genelleştirme sabit modunda herhangi bir kültürün oluşturulmasına izin verdi. Ancak gerçek kültür verileri yerine sabit kültür verileri kullanılmıştır. .NET 6'dan başlayarak, genelleştirme sabit modunda sabit kültür dışında bir kültür oluşturursanız bir özel durum oluşturulur.
  • Daha önce, genelleştirme sabit modu yalnızca ASCII karakterleri için büyük/küçük harf eşlemeyi destekliyor. .NET 6'dan başlayarak, genelleştirme sabit modu tüm Unicode tanımlı karakterler için tam büyük/küçük harf eşleme desteği sağlar. Büyük/küçük harf eşlemesi dize karşılaştırmaları, dize aramaları ve büyük/küçük harf dizeleri gibi işlemlerde kullanılır.

Genelleştirme sabit modu , genelleştirme desteği gerektirmeyen uygulamalar için kullanılır. Başka bir ifadeyle, uygulama kültüre özgü verilere ve davranışlara erişim olmadan çalışır. Genelleştirme sabit modu, alpine kapsayıcıları gibi bazı Docker kapsayıcılarında varsayılan olarak etkindir.

Eski davranış

Genelleştirme sabit modu etkinleştirildiğinde önceki .NET sürümlerinde:

  • Bir uygulama sabit kültür olmayan bir kültür oluşturursa işlem başarılı olur, ancak döndürülen kültür her zaman gerçek kültür verileri yerine sabit kültür verilerini kullanır.

  • Büyük/küçük harf eşlemesi yalnızca ASCII karakterleri için gerçekleştirildi. Örneğin:

    if ("Á".Equals("á", StringComparison.CurrentCultureIgnoreCase)) // Evaluates to false.
    

Yeni davranış

Genelleştirme sabit modu etkinleştirildiğinde .NET 6'dan başlayarak:

  • Bir uygulama sabit kültür olmayan bir kültür oluşturmaya çalışırsa, bir CultureNotFoundException özel durum oluşturulur.

  • Tüm Unicode tanımlı karakterler için büyük/küçük harf eşlemesi gerçekleştirilir. Örneğin:

    if ("Á".Equals("á", StringComparison.CurrentCultureIgnoreCase)) // Evaluates to true.
    

Sürüm kullanıma sunulmuştur

.NET 6

Değişiklik nedeni

Kültür oluşturma değişikliği, kültürle ilgili sorunları daha kolay tanılamak için tanıtıldı. Bazı kullanıcılar, uygulamalarının genelleştirme sabit modunun etkinleştirildiği bir ortamda çalıştığının farkında değildir. Beklenmeyen davranışlarla karşılaşabilir ve genelleştirme sabit moduyla ilişkilendirme yapmazlar, bu nedenle sorunu tanılamak zordur.

Genelleştirme sabit modunda daha iyi kullanılabilirlik ve deneyim için tam durum eşleme desteği sunulmuştur.

Çoğu durumda herhangi bir eylem gerekmez. Ancak, önceki kültür oluşturma davranışını istiyorsanız, genelleştirme sabit modunda herhangi bir kültürün oluşturulmasına izin vermek için bir çalışma zamanı yapılandırma seçeneği ayarlayabilirsiniz. Daha fazla bilgi için bkz . Önceden tanımlanmış kültürler.

Etkilenen API’ler

Ayrıca bkz.