Auf Englisch lesen

Teilen über


SortVersion Klasse

Definition

Stellt Informationen über die Unicode-Version bereit, die zum Vergleichen und Sortieren von Zeichenfolgen verwendet wird.

C#
public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
C#
[System.Serializable]
public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
Vererbung
SortVersion
Attribute
Implementiert

Beispiele

Das folgende Beispiel enthält einen Teil des Quellcodes einer Anwendung, die die SortVersion -Klasse verwendet, um sicherzustellen, dass die systemeigenen Namen von RegionInfo Objekten für das aktuelle System und die aktuelle Kultur entsprechend sortiert werden. Die -Objekte und BinaryWriter werden BinaryReader verwendet, um geordnete Daten aus einer Datendatei namens Regions.dat zu speichern und abzurufen, anstatt bei jeder Ausführung der Anwendung Daten abzurufen und zu sortieren. Im Beispiel wird zunächst überprüft, ob die Datendatei vorhanden ist. Wenn dies nicht der Fall ist, werden die Daten erstellt und das reindex Flag festgelegt, das angibt, dass die Daten erneut abgerufen und gespeichert werden müssen. Andernfalls werden die Daten abgerufen und das gespeicherte SortVersion Objekt mit dem SortVersion -Objekt für die aktuelle Kultur im aktuellen System verglichen. Wenn sie nicht gleich sind oder das reindex Flag zuvor festgelegt wurde, wird auf die RegionInfo Daten zurückgesetzt.

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

Hinweise

Weitere Informationen zu dieser API finden Sie unter Zusätzliche API-Hinweise für SortVersion.

Konstruktoren

SortVersion(Int32, Guid)

Erstellt eine neue Instanz der SortVersion-Klasse.

Eigenschaften

FullVersion

Ruft die vollständige Versionsnummer des SortVersion-Objekts ab.

SortId

Ruft einen globalen eindeutigen Bezeichner für dieses SortVersion-Objekt ab.

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese SortVersion-Instanz gleich einem angegebenen Objekt ist.

Equals(SortVersion)

Gibt einen Wert zurück, der angibt, ob diese SortVersion-Instanz gleich einem angegebenen SortVersion-Objekt ist.

GetHashCode()

Gibt einen Hashcode für diese Instanz zurück.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Operatoren

Equality(SortVersion, SortVersion)

Gibt an, ob zwei SortVersion-Instanzen gleich sind.

Inequality(SortVersion, SortVersion)

Gibt an, ob zwei SortVersion-Instanzen ungleich sind.

Gilt für:

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

Weitere Informationen