Delen via


Cultuurcreatie en hoofdlettergebruik in globalisatie-invariante modus

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.

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

Zie ook