Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

SortVersion-Klasse

.NET Framework 4.6 and 4.5

Stellt Informationen zur Version von Unicode bereit, der verwendet wird, um Zeichenfolgen zu vergleichen und zu sortieren.

System.Object
  System.Globalization.SortVersion

Namespace:  System.Globalization
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
public sealed class SortVersion : IEquatable<SortVersion>

Der SortVersion-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeSortVersionErstellt eine neue Instanz der SortVersion-Klasse.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftFullVersionRuft die vollständige Versionsnummer des SortVersion-Objekts ab.
Öffentliche EigenschaftSortIdRuft einen globalen eindeutigen Bezeichner für dieses SortVersion-Objekt ab.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeEquals(Object)Gibt einen Wert zurück, der angibt, ob diese SortVersion-Instanz gleich einem angegebenen Objekt ist. (Überschreibt Object.Equals(Object).)
Öffentliche MethodeEquals(SortVersion)Gibt einen Wert zurück, der angibt, ob diese SortVersion-Instanz gleich einem angegebenen SortVersion-Objekt ist.
Öffentliche MethodeGetHashCodeGibt einen Hashcode für diese Instanz zurück. (Überschreibt Object.GetHashCode().)
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentlicher OperatorStatischer MemberEqualityGibt an, ob zwei SortVersion-Instanzen gleich sind.
Öffentlicher OperatorStatischer MemberInequalityGibt an, ob zwei SortVersion-Instanzen ungleich sind.
Zum Seitenanfang

Aus .NET Framework 2.0 Service Pack 1, von .NET Framework 4 verfügt jede Version von .NET-Framework Tabellen enthalten, die Sortierungsgewichtungen und Daten auf Zeichenfolgennormalisierung enthalten und die auf einer bestimmten Version des Unicode sind. In .NET Framework 4.5 ist das Vorhandensein dieser Tabellen vom Betriebssystem ab:

  • Unter Windows 7 und früheren Versionen des Windows-Betriebssystems, fahren fort, die Tabellen für das Vergleichen und die Sortierung von Zeichenfolgen verwendet werden.

  • Unter Windows 8 delegiert .NET Framework Zeichenfolgenvergleichs- und Reihenfolgenvorgänge zum Betriebssystem.

Infolgedessen kann das Ergebnis eines Zeichenfolgenvergleichs nicht nur von .NET Framework, sondern auch von der Version des Betriebssystems, als die folgende Tabelle zeigt abhängen.

.NET Framework-Version

Betriebssystem

Unicode-Version

.NET Framework 4

Alle Betriebssysteme

Unicode 5.0

.NET Framework 4.5

Windows 7

Unicode 5.0

.NET Framework 4.5

Windows 8

Unicode 6.0

Unter Windows 8 da die Version von Unicode im Zeichenfolgenvergleich verwendet und in der Reihenfolge von der Version des Betriebssystems abhängig ist, unterscheidet die Ergebnisse möglicherweise des Zeichenfolgenvergleichs sogar für Anwendungen, die auf eine bestimmte Version von .NET Framework ausgeführt werden.

Die SortVersion-Klasse stellt Informationen über die Unicode-Version bereit, die von .NET Framework für Zeichenfolgenvergleiche und Reihenfolge verwendet wird. Sie ermöglicht es Entwicklern, für Anwendungen schreiben, die Änderungen in der Version des Unicode erkennen und erfolgreich behandeln können, der verwendet wird, um die Zeichenfolgen einer Anwendung zu vergleichen und zu sortieren.

Sie können ein SortVersion-Objekt auf zwei Arten instanziieren:

  • Durch Aufrufen des SortVersion-Konstruktors, der ein neues SortVersion-Objekt auf Grundlage einer Versionsnummer und Sortierung ID instanziiert Dieser Konstruktor ist nützlich, wenn ein SortVersion-Objekt der gespeicherten Daten neu erstellt.

  • Durch Abrufen des Werts der CompareInfo.Version-Eigenschaft. Diese Eigenschaft stellt Informationen über die Unicode-Version, die von .NET Framework verwendet wurde, auf denen die Anwendung ausgeführt wird.

Die SortVersion-Klasse verfügt über zwei Eigenschaften, FullVersion und SortId, die der Unicode-Version und der bestimmten Kultur angeben, die für Zeichenfolgenvergleiche verwendet werden. Die FullVersion-Eigenschaft ist ein beliebiger numerischer Wert, der die Unicode-Version widerspiegelt, die für Zeichenfolgenvergleiche verwendet wird, und die Eigenschaft SortId ist beliebiges Guid, die die Kultur darstellt, deren Konventionen für Zeichenfolgenvergleiche verwendet werden. Die Werte dieser zwei Eigenschaften sind wichtig, wenn Sie zwei Objekte SortVersion vergleichen, indem Sie die Equals-Methode, den Adressoperator Equality oder Inequality den Adressoperator verwenden.

Sie verwenden in der Regel ein SortVersion-Objekt, wenn Sie ein Formular von kulturabhängigen, geordnete Zeichenfolgendaten, z Indizes oder Literalzeichenfolgen den selbst speichern oder abrufen. Gehen Sie dazu folgendermaßen vor:

  1. Wenn die geordnete Zeichenfolgendaten gespeichert werden, werden die Eigenschaftswerte FullVersion und SortId auch gespeichert.

  2. Wenn die geordnete Zeichenfolgendaten abgerufen werden, können Sie das SortVersion-Objekt neu erstellen, das für Sortierungen der Zeichenfolgen verwendet wird, indem Sie den SortVersion-Konstruktor aufrufen.

  3. In neu instanziiertes SortVersion-Objekt ist einem SortVersion-Objekt verglichen, das die Kultur darstellt, deren Konventionen verwendet werden, damit die Zeichenfolgendaten zu sortieren.

  4. Wenn die beiden SortVersion-Objekte nicht gleich sind, müssen die Zeichenfolgendaten neu angeordnet werden.

Dies wird im Beispiel veranschaulicht.

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 geeignet für die aktuellen System und die aktuelle Kultur sortiert werden. Er verwendet die BinaryReader und BinaryWriter-Objekte, um eine geordnete Daten einer Datendatei speichern und abrufen, die Regions.dat statt die das Abrufen und Bestelldaten, wenn die Anwendung, mit wird ausgeführt wird. Das Beispiel überprüft zuerst, um zu bestimmen, ob die Datei vorhanden ist. Wenn nicht, erstellt es die Daten und das reindex-Flag fest, das angibt, dass die Daten erneut sortiert werden und gespeichert werden müssen. Andernfalls werden Daten ab und vergleicht das gespeicherte SortVersion-Objekt mit dem SortVersion-Objekt für die aktuelle Kultur im aktuellen System. Wenn sie nicht übereinstimmen oder das Flag reindex zuvor festgelegt wurde, sortiert es die Daten RegionInfo neu.


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


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft