Share via


Classe SortVersion

Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.

Ordinamento e confronto tra stringhe in .NET Framework

Tramite .NET Framework 4, ogni versione di .NET Framework includeva tabelle che contengono pesi di ordinamento e dati sulla normalizzazione delle stringhe e basate su una versione specifica di Unicode. In .NET Framework 4.5 e versioni successive la presenza di queste tabelle dipende dal sistema operativo:

  • In Windows 7 e nelle versioni precedenti le tabelle continuano a essere usate per il confronto e l'ordinamento delle stringhe.
  • In Windows 8.NET Framework delega le operazioni di confronto e ordinamento delle stringhe al sistema operativo.

Di conseguenza, il risultato di un confronto tra stringhe può dipendere non solo dalla versione di .NET Framework, ma anche dalla versione del sistema operativo, come illustrato nella tabella seguente. Si noti che l'elenco delle versioni supportate da Unicode si applica soltanto al confronto dei caratteri e all'ordinamento alfabetico; non si applica alla classificazione di caratteri Unicode in base alla categoria.

Versione di .NET Framework Sistema operativo Versione Unicode
4 Tutti i sistemi operativi Unicode 5.0
4.5 e versioni successive Windows 7 Unicode 5.0
4.5 e versioni successive Windows 8 e versioni successive Unicode 6.0

In Windows 8, poiché la versione di Unicode usata nel confronto delle stringhe e nell'ordinamento dipende dalla versione del sistema operativo, i risultati del confronto tra stringhe possono differire anche per le applicazioni eseguite in una versione specifica di .NET Framework.

Ordinamento e confronto tra stringhe in .NET Core

Tutte le versioni di .NET (Core) si basano sul sistema operativo sottostante durante l'esecuzione di confronti tra stringhe. Pertanto, i risultati di un confronto di stringhe o l'ordine in cui le stringhe vengono ordinate dipende dalla versione di Unicode usata dal sistema operativo durante l'esecuzione del confronto. In Linux, macOS e Windows 10 e versioni successive, i componenti internazionali per le librerie Unicode forniscono l'implementazione per le API di confronto e ordinamento.

Usare la classe SortVersion

La SortVersion classe fornisce informazioni sulla versione Unicode usata da .NET per il confronto e l'ordinamento delle stringhe. Consente agli sviluppatori di scrivere applicazioni in grado di rilevare e gestire correttamente le modifiche nella versione di Unicode usata per confrontare e ordinare le stringhe di un'applicazione.

È possibile creare un'istanza di un SortVersion oggetto in due modi:

  • Chiamando il SortVersion costruttore , che crea un'istanza di un nuovo SortVersion oggetto in base a un numero di versione e a un ID di ordinamento. Questo costruttore è più utile quando si ricrea un SortVersion oggetto dai dati salvati.
  • Recuperando il valore della CompareInfo.Version proprietà. Questa proprietà fornisce informazioni sulla versione Unicode usata dall'implementazione .NET in cui è in esecuzione l'applicazione.

La SortVersion classe ha due proprietà, FullVersion e SortId, che indicano la versione Unicode e le impostazioni cultura specifiche usate per il confronto tra stringhe. La FullVersion proprietà è un valore numerico arbitrario che riflette la versione Unicode usata per il confronto tra stringhe e la SortId proprietà è un arbitrario Guid che riflette le impostazioni cultura le cui convenzioni vengono utilizzate per il confronto tra stringhe. I valori di queste due proprietà sono importanti solo quando si confrontano due SortVersion oggetti usando il Equals metodo , l'operatore Equality o l'operatore Inequality .

In genere si usa un SortVersion oggetto durante il salvataggio o il recupero di una forma di dati stringa ordinati e sensibili alle impostazioni cultura, ad esempio indici o stringhe letterali stesse. La procedura da adottare è la seguente:

  1. Quando vengono salvati i dati della stringa ordinata, vengono salvati anche i valori delle FullVersion proprietà e SortId .

  2. Quando vengono recuperati i dati di stringa ordinati, è possibile ricreare l'oggetto SortVersion usato per ordinare le stringhe chiamando il SortVersion costruttore .

  3. Questo oggetto appena creato SortVersion viene confrontato con un SortVersion oggetto che riflette le impostazioni cultura le cui convenzioni vengono utilizzate per ordinare i dati stringa.

  4. Se i due SortVersion oggetti non sono uguali, i dati stringa devono essere riordinati.