Kultúra létrehozása és esetleképezés globalizációs invariant módban

Ez a kompatibilitástörő változás kétféleképpen befolyásolja a globalizációs invariáns módot:

  • Korábban a .NET lehetővé tette, hogy minden kultúra globalizációs invariáns módban legyen létrehozva, feltéve, hogy a kultúra neve megfelelt a BCP-47-nek. Az invariáns kulturális adatokat azonban a valós kulturális adatok helyett használták. A .NET 6-tól kezdve kivételt jelent, ha az invariáns kultúrától eltérő kultúrát hoz létre globalizációs invariáns módban.
  • Korábban a globalizációs invariáns mód csak az ASCII-karakterek esetleképezését támogatta. A .NET 6-tól kezdődően a globalizációs invariant mód teljes körű kis- és nagybetűleképezést biztosít az összes Unicode-karakterhez. A kis- és nagybetűk leképezése olyan műveletekben használatos, mint a sztring-összehasonlítások, a sztringkeresések és a felső vagy alsó casing sztringek.

A globalizációs invariant mód olyan alkalmazásokhoz használható, amelyek nem igényelnek globalizációs támogatást. Vagyis az alkalmazás a kultúraspecifikus adatokhoz és viselkedéshez való hozzáférés nélkül fut. A globalizációs invariáns mód alapértelmezés szerint engedélyezve van bizonyos Docker-tárolókon, például az Alpine-tárolókon.

Régi viselkedés

A korábbi .NET-verziókban, ha engedélyezve van a globalizációs invariant mód:

  • Ha egy alkalmazás olyan kultúrát hoz létre, amely nem az invariáns kultúra, a művelet sikeres, de a visszaadott kultúra mindig az invariáns kulturális adatokat használja a valós kulturális adatok helyett.

  • A kis- és nagybetűk leképezése csak ASCII-karakterek esetében történt. Példa:

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

Új viselkedés

A .NET 6-tól kezdve, ha engedélyezve van a globalizációs invariant mód:

  • Ha egy alkalmazás olyan kultúrát próbál létrehozni, amely nem az invariáns kultúra, CultureNotFoundException kivételt jelent.

  • A kis- és nagybetűk leképezése minden Unicode-karakter esetében történik. Példa:

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

Bevezetett verzió

.NET 6

A változás oka

A kultúralétrehozás változását a kultúrával kapcsolatos problémák egyszerűbb diagnosztizálása érdekében vezették be. Egyes felhasználók nem tudják, hogy alkalmazásaik olyan környezetben futnak, ahol engedélyezve van a globalizációs invariáns mód. Előfordulhat, hogy váratlan viselkedést tapasztalnak, és nem társítják a globalizációs invariáns móddal, ezért nehéz diagnosztizálni a problémát.

A teljes esetleképezési támogatást bevezettük a jobb használhatóság és a globalizációs invariáns módban nyújtott élmény érdekében.

A legtöbb esetben nincs szükség műveletre. Ha azonban a korábbi kultúralétrehozási viselkedésre vágyik, beállíthat egy futtatókörnyezeti konfigurációs beállítást, amely lehetővé teszi bármilyen kultúra létrehozását globalizációs invariáns módban. További információ: Előre definiált kultúrák.

Érintett API-k

Lásd még