Leggi in inglese

Condividi tramite


SortVersion Classe

Definizione

Fornisce le informazioni sulla versione di Unicode usata per confrontare e ordinare le stringhe.

C#
public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
C#
[System.Serializable]
public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
Ereditarietà
SortVersion
Attributi
Implementazioni

Esempio

L'esempio seguente contiene una parte del codice sorgente di un'applicazione che usa la SortVersion classe per assicurarsi che i nomi nativi degli RegionInfo oggetti siano ordinati in modo appropriato per il sistema corrente e le impostazioni cultura correnti. Usa gli BinaryReader oggetti e BinaryWriter per archiviare e recuperare dati ordinati da un file di dati denominato Regions.dat anziché recuperare e ordinare i dati ogni volta che l'applicazione viene eseguita. L'esempio controlla prima di tutto per determinare se il file di dati esiste. In caso contrario, crea i dati e imposta il reindex flag, che indica che i dati devono essere resortti e salvati di nuovo. In caso contrario, recupera i dati e confronta l'oggetto salvato SortVersion con l'oggetto SortVersion per le impostazioni cultura correnti nel sistema corrente. Se non sono uguali o se il reindex flag è stato impostato in precedenza, si applica ai RegionInfo dati.

C#
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Text;

public class Example : IComparer
{
   private const string FILENAME = @".\Regions.dat";

   private struct Region
   {
      internal Region(string id, string name)
      {
         this.Id = id;
         this.NativeName = name;
      }

      public string Id;
      public string NativeName;

      public override string ToString()
      {
         return this.NativeName;
      }
   }

   public static void Main()
   {
      bool reindex = false;

      Region[] regions;
      SortVersion ver = null;

      // If the data has not been saved, create it.
      if (! File.Exists(FILENAME)) {
         regions = GenerateData();
         ver = CultureInfo.CurrentCulture.CompareInfo.Version;
         reindex = true;
      }
      // Retrieve the existing data.
      else {
         regions = RestoreData(out ver);
      }

      // Determine whether the current ordering is valid; if not, reorder.
      if (reindex || ver != CultureInfo.CurrentCulture.CompareInfo.Version) {
         Array.Sort(regions, new Example());
         // Save newly reordered data.
         SaveData(regions);
      }

      // Continue with application...
   }

   private static Region[] GenerateData()
   {
      List<Region> regions = new List<Region>();

      foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures)) {
         if (culture.IsNeutralCulture | culture.Equals(CultureInfo.InvariantCulture))
            continue;

         RegionInfo region = new RegionInfo(culture.Name);
         regions.Add(new Region(region.Name, region.NativeName));
      }
      return regions.ToArray();
   }

   private static Region[] RestoreData(out SortVersion ver)
   {
      List<Region> regions = new List<Region>();

      BinaryReader rdr = new BinaryReader(File.Open(FILENAME, FileMode.Open));

      int sortVer = rdr.ReadInt32();
      Guid sortId = Guid.Parse(rdr.ReadString());
      ver = new SortVersion(sortVer, sortId);

      string id, name;
      while (rdr.PeekChar() != -1) {
         id = rdr.ReadString();
         name = rdr.ReadString();
         regions.Add(new Region(id, name));
      }
      return regions.ToArray();
   }

   private static void SaveData(Region[] regions)
   {
      SortVersion ver = CultureInfo.CurrentCulture.CompareInfo.Version;

      BinaryWriter wrtr = new BinaryWriter(File.Open(FILENAME, FileMode.Create));
      wrtr.Write(ver.FullVersion);
      wrtr.Write(ver.SortId.ToString());

      foreach (var region in regions) {
         wrtr.Write(region.Id);
         wrtr.Write(region.NativeName);
      }
      wrtr.Close();
   }

   public int Compare(object o1, object o2)
   {
        // Assume that all casts succeed.
        Region r1 = (Region) o1;
        Region r2 = (Region) o2;

        return String.Compare(r1.NativeName, r2.NativeName,
                              StringComparison.CurrentCulture);
   }
}

Commenti

Per altre informazioni su questa API, vedere Osservazioni api supplementari per SortVersion.

Costruttori

SortVersion(Int32, Guid)

Crea una nuova istanza della classe SortVersion.

Proprietà

FullVersion

Ottiene il numero di versione completo dell'oggetto SortVersion.

SortId

Ottiene un identificatore globalmente univoco per questo oggetto SortVersion.

Metodi

Equals(Object)

Restituisce un valore che indica se l'istanza SortVersion è uguale a un oggetto specificato.

Equals(SortVersion)

Restituisce un valore che indica se l'istanza SortVersion è uguale a un oggetto SortVersion specificato.

GetHashCode()

Restituisce un codice hash per questa istanza.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Operatori

Equality(SortVersion, SortVersion)

Indica se due istanze di SortVersion sono uguali.

Inequality(SortVersion, SortVersion)

Indica se due istanze di SortVersion non sono uguali.

Si applica a

Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Vedi anche