英語で読む

次の方法で共有


SortVersion クラス

定義

文字列の比較および並べ替えに使用される Unicode のバージョンに関する情報を取得します。

C#
public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
C#
[System.Serializable]
public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
継承
SortVersion
属性
実装

次の例には、 クラスを使用 SortVersion するアプリケーションのソース コードの一部が含まれており、オブジェクトのネイティブ名が現在のシステムと現在の RegionInfo カルチャに対して適切に順序付けされていることを確認します。 および オブジェクトをBinaryReaderBinaryWriter使用して、アプリケーションが実行されるたびにデータを取得して順序付けするのではなく、 という名前のデータ ファイルに対して順序付けRegions.datされたデータを格納および取得します。 この例では、最初にデータ ファイルが存在するかどうかを確認します。 そうでない場合は、データを作成し、 フラグを reindex 設定します。このフラグは、データを取得して保存し直す必要があることを示します。 それ以外の場合は、データを取得し、保存された SortVersion オブジェクトと現在のシステム上の SortVersion 現在のカルチャの オブジェクトを比較します。 等しくない場合、またはフラグが reindex 以前に設定されている場合は、データに RegionInfo 頼ります。

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

注釈

この API の詳細については、「 SortVersion の補足 API 解説」を参照してください。

コンストラクター

SortVersion(Int32, Guid)

SortVersion クラスの新しいインスタンスを作成します。

プロパティ

FullVersion

SortVersion オブジェクトの完全なバージョン番号を取得します。

SortId

この SortVersion オブジェクトの一意の識別子をグローバルに取得します。

メソッド

Equals(Object)

この SortVersion インスタンスが、指定したオブジェクトに等しいかどうかを示す値を返します。

Equals(SortVersion)

この SortVersion インスタンスが、指定した SortVersion オブジェクトに等しいかどうかを示す値を返します。

GetHashCode()

このインスタンスのハッシュ コードを返します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

演算子

Equality(SortVersion, SortVersion)

2 つの SortVersion インスタンスが等しいかどうかを示します。

Inequality(SortVersion, SortVersion)

SortVersion の 2 つのインスタンスが等しくないかどうかを示します。

適用対象

製品 バージョン
.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

こちらもご覧ください