Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Den här artikeln innehåller ytterligare kommentarer till referensdokumentationen för det här API:et.
Sortering och strängjämförelse i .NET Framework
Via .NET Framework 4 innehöll varje version av .NET Framework tabeller som innehöll sorteringsvikter och data om strängnormalisering och som baseras på en viss version av Unicode. I .NET Framework 4.5 och senare versioner beror förekomsten av dessa tabeller på operativsystemet:
- I Windows 7 och tidigare versioner fortsätter tabellerna att användas för att jämföra och sortera strängar.
- I Windows 8 delegerar .NET Framework strängjämförelser och beställningsåtgärder till operativsystemet.
Resultatet av en strängjämförelse kan därför inte bara bero på .NET Framework-versionen, utan även på operativsystemversionen, som följande tabell visar. Observera att den här listan över Unicode-versioner som stöds endast gäller för teckenjämförelse och sortering. Det gäller inte för klassificering av Unicode-tecken efter kategori.
| .NET Framework-version | Operativsystem | Unicode-version |
|---|---|---|
| 4 | Alla operativsystem | Unicode 5.0 |
| 4.5 och senare versioner | Windows 7 | Unicode 5.0 |
| 4.5 och senare versioner | Windows 8- och senare versioner | Unicode 6.0 |
Eftersom den version av Unicode som används i strängjämförelse och ordning beror på vilken version av operativsystemet som används i Windows 8, kan resultatet av strängjämförelse skilja sig även för program som körs på en viss version av .NET Framework.
Sortering och strängjämförelse i .NET Core
Alla versioner av .NET (Core) förlitar sig på det underliggande operativsystemet när du utför strängjämförelser. Resultatet av en strängjämförelse eller i vilken ordning strängar sorteras beror därför på vilken version av Unicode som används av operativsystemet när jämförelsen utförs. I Linux-, macOS- och Windows 10- och senare versioner tillhandahåller International Components for Unicode-bibliotek implementeringen för jämförelse- och sorterings-API:er.
Använda klassen SortVersion
Klassen SortVersion innehåller information om den Unicode-version som används av .NET för strängjämförelse och ordningsföljd. Det gör det möjligt för utvecklare att skriva program som kan identifiera och hantera ändringar i den version av Unicode som används för att jämföra och sortera ett programs strängar.
Du kan instansiera ett SortVersion objekt på två sätt:
- Genom att anropa SortVersion konstruktorn, som instansierar ett nytt SortVersion objekt baserat på ett versionsnummer och sorterings-ID. Den här konstruktorn är mest användbar när du återskapar ett SortVersion objekt från sparade data.
- Genom att hämta värdet för egenskapen CompareInfo.Version. Den här egenskapen innehåller information om den Unicode-version som används av .NET-implementeringen som programmet körs på.
Klassen SortVersion har två egenskaper, FullVersion och SortId, som anger Unicode-versionen och den specifika kultur som används för strängjämförelse. Egenskapen FullVersion är ett godtyckligt numeriskt värde som återspeglar den Unicode-version som används för strängjämförelse, och SortId egenskapen är en godtycklig Guid som återspeglar den kultur vars konventioner används för strängjämförelse. Värdena för dessa två egenskaper är bara viktiga när du jämför två SortVersion objekt med hjälp Equals av metoden, operatorn Equality eller operatorn Inequality .
Du använder vanligtvis ett SortVersion objekt när du sparar eller hämtar någon form av kulturkänsliga, ordnade strängdata, till exempel index eller själva literalsträngarna. Detta kräver följande steg:
När beställda strängdata sparas sparas även egenskapsvärdena FullVersion och SortId .
När beställda strängdata hämtas kan du återskapa det SortVersion objekt som används för att sortera strängarna genom att anropa SortVersion konstruktorn.
Det här nyligen instansierade SortVersion objektet jämförs med ett SortVersion objekt som återspeglar den kultur vars konventioner används för att sortera strängdata.
Om de två SortVersion objekten inte är lika med måste strängdata ordnas om.