Číst v angličtině

Sdílet prostřednictvím


SortVersion Třída

Definice

Poskytuje informace o verzi Unicode sloužící k porovnání a řazení řetězců.

public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
[System.Serializable]
public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
Dědičnost
SortVersion
Atributy
Implementuje

Příklady

Následující příklad obsahuje část zdrojového kódu z aplikace, která používá SortVersion třídu k zajištění správného pořadí nativních RegionInfo názvů objektů pro aktuální systém a aktuální jazykovou verzi. BinaryReader Používá objekty a BinaryWriter k ukládání a načítání seřazených dat z datového souboru s názvem Regions.dat místo načítání a řazení dat při každém spuštění aplikace. Příklad nejprve zkontroluje, jestli datový soubor existuje. Pokud ne, vytvoří data a nastaví reindex příznak, který označuje, že se data musí znovu uchylovat a uložit. V opačném případě načte data a porovná uložený SortVersion objekt s objektem SortVersion pro aktuální jazykovou verzi v aktuálním systému. Pokud se nerovnají nebo pokud reindex byl příznak nastaven dříve, uchýlí se k RegionInfo datům.

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

Poznámky

Další informace o tomto rozhraní API najdete v tématu Doplňkové poznámky rozhraní API pro SortVersion.

Konstruktory

SortVersion(Int32, Guid)

Vytvoří novou instanci třídy SortVersion.

Vlastnosti

FullVersion

Získá úplné číslo verze objektu SortVersion .

SortId

Získá globálně jedinečný identifikátor pro tento SortVersion objekt.

Metody

Equals(Object)

Vrátí hodnotu, která označuje, zda se tato SortVersion instance rovná zadanému objektu.

Equals(SortVersion)

Vrátí hodnotu, která označuje, zda se tato SortVersion instance rovná zadanému SortVersion objektu.

GetHashCode()

Vrátí kód hash pro tuto instanci.

GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Operátory

Equality(SortVersion, SortVersion)

Určuje, zda jsou dvě SortVersion instance stejné.

Inequality(SortVersion, SortVersion)

Určuje, jestli si dvě SortVersion instance nejsou rovny.

Platí pro

Produkt Verze
.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

Viz také