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.
Javasolt művelet
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
- CultureInfo
- System.Globalization.CultureInfo.CreateSpecificCulture(String)
- System.Globalization.CultureInfo.GetCultureInfo
- RegionInfo
- A sztringek burkolatát, összehasonlítását vagy keresését végző API-k
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: