Leer en inglés

Compartir a través de


SortVersion Clase

Definición

Proporciona información sobre la versión de Unicode utilizada para comparar y ordenar cadenas.

C#
public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
C#
[System.Serializable]
public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
Herencia
SortVersion
Atributos
Implementaciones

Ejemplos

El ejemplo siguiente contiene una parte del código fuente de una aplicación que usa la SortVersion clase para asegurarse de que los nombres nativos de RegionInfo los objetos se ordenan correctamente para el sistema actual y la referencia cultural actual. Usa los BinaryReader objetos y BinaryWriter para almacenar y recuperar datos ordenados de un archivo de datos denominado Regions.dat en lugar de recuperar y ordenar datos cada vez que se ejecuta la aplicación. En primer lugar, el ejemplo comprueba si el archivo de datos existe. Si no lo hace, crea los datos y establece la reindex marca , lo que indica que los datos se deben recurrir y guardar de nuevo. De lo contrario, recupera los datos y compara el objeto guardado SortVersion con el SortVersion objeto de la referencia cultural actual en el sistema actual. Si no son iguales o si la reindex marca se había establecido anteriormente, recurre a los RegionInfo datos.

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);
   }
}

Comentarios

Para obtener más información sobre esta API, consulte Comentarios complementarios de api para SortVersion.

Constructores

SortVersion(Int32, Guid)

Crea una nueva instancia de la clase SortVersion.

Propiedades

FullVersion

Obtiene el número de versión completo del objeto SortVersion.

SortId

Obtiene un identificador único global para este objeto SortVersion.

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia de SortVersion equivale a un objeto especificado.

Equals(SortVersion)

Devuelve un valor que indica si esta instancia de SortVersion equivale a un objeto SortVersion especificado.

GetHashCode()

Devuelve un código hash para esta instancia.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Operadores

Equality(SortVersion, SortVersion)

Indica si dos instancias SortVersion son iguales.

Inequality(SortVersion, SortVersion)

Indica si dos instancias de SortVersion no son iguales.

Se aplica a

Producto Versiones
.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

Consulte también