Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze breaking change is van invloed op de globalisering-invariantmodus op twee manieren:
- Voorheen liet .NET toe om elke cultuur te maken in de globalization-invariant-modus, zolang de cultuurnaam voldeed aan BCP-47. De invariante cultuurgegevens zijn echter gebruikt in plaats van de echte cultuurgegevens. Vanaf .NET 6 wordt er een uitzondering opgeworpen als u een andere cultuur creëert dan de invariante cultuur in globalization invariant-modus.
- Eerder ondersteunde de globalization-invariant-modus alleen hoofdlettertoewijzing voor ASCII-tekens. Vanaf .NET 6 biedt de globalisatie-invariantemodus volledige ondersteuning voor hoofdlettertoewijzing voor alle door Unicode gedefinieerde tekens. Casetoewijzing wordt gebruikt in bewerkingen zoals tekenreeksvergelijkingen, zoekopdrachten in tekenreeksen en hoofdletters of kleine hoofdletters.
Globalization-invariant-modus wordt gebruikt voor apps waarvoor geen ondersteuning voor globalisatie is vereist. Dat wil gezegd, de app wordt uitgevoerd zonder toegang tot cultuurspecifieke gegevens en gedrag. Globalization-invariant-modus is standaard ingeschakeld voor sommige Docker-containers, bijvoorbeeld Alpine-containers.
Oud gedrag
In eerdere .NET-versies wanneer de globalization-invariant-modus is ingeschakeld:
Als een app een cultuur maakt die niet de invariante cultuur is, slaagt de bewerking, maar gebruikt de geretourneerde cultuur altijd de invariante cultuurgegevens in plaats van de echte cultuurgegevens.
Tekensomzetting is uitgevoerd alleen voor ASCII-tekens. Voorbeeld:
if ("Á".Equals("á", StringComparison.CurrentCultureIgnoreCase)) // Evaluates to false.
Nieuw gedrag
Vanaf .NET 6 wanneer de globalisatie-invariantmodus is ingeschakeld:
Als een app probeert een cultuur te maken die niet de invariante cultuur is, wordt er een CultureNotFoundException uitzondering gegenereerd.
Case-mapping wordt uitgevoerd voor alle Unicode-gedefinieerde tekens. Voorbeeld:
if ("Á".Equals("á", StringComparison.CurrentCultureIgnoreCase)) // Evaluates to true.
Geïntroduceerde versie
.NET 6
Reden voor wijziging
De wijziging in het creëren van cultuur is geïntroduceerd om problemen met betrekking tot cultuur gemakkelijker vast te stellen. Sommige gebruikers weten niet dat hun apps worden uitgevoerd in een omgeving waarin de globalisatie-invariantmodus is ingeschakeld. Ze kunnen onverwacht gedrag ondervinden en de koppeling met de globalization-invariant-modus niet maken, dus het is moeilijk om het probleem te diagnosticeren.
De volledige ondersteuning voor casetoewijzing is geïntroduceerd voor betere bruikbaarheid en ervaring in de globalisatie-invariabele modus.
Aanbevolen actie
In de meeste gevallen is er geen actie nodig. Als u echter het vorige gedrag voor het maken van cultuur wenst, kunt u een runtimeconfiguratieoptie instellen om het maken van een cultuur in de globalization-invariant-modus mogelijk te maken. Zie Vooraf gedefinieerde culturen voor meer informatie.
Betreffende API's
- CultureInfo
- System.Globalization.CultureInfo.CreateSpecificCulture(String)
- System.Globalization.CultureInfo.GetCultureInfo
- RegionInfo
- API's die tekenreeksbehuizing, vergelijking of zoekopdracht uitvoeren