SortVersion 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
문자열을 비교하고 정렬하는 데 사용되는 유니코드 버전에 대한 정보를 제공합니다.
public ref class SortVersion sealed : IEquatable<System::Globalization::SortVersion ^>
public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
[System.Serializable]
public sealed class SortVersion : IEquatable<System.Globalization.SortVersion>
type SortVersion = class
interface IEquatable<SortVersion>
[<System.Serializable>]
type SortVersion = class
interface IEquatable<SortVersion>
Public NotInheritable Class SortVersion
Implements IEquatable(Of SortVersion)
- 상속
-
SortVersion
- 특성
- 구현
예제
다음 예제에서는 소스 코드를 사용 하는 애플리케이션의 일부를 포함 합니다 SortVersion 클래스의 기본 이름이 되도록 RegionInfo 개체는 현재 시스템 및 현재 문화권에 대 한 적절 하 게 정렬 됩니다. 사용 하 여는 BinaryReader 하 고 BinaryWriter 개체를 저장 및 검색 이라는 데이터 파일에서 데이터를 정렬 Regions.dat
검색 하 고 애플리케이션이 실행 될 때마다 데이터를 정렬 하는 대신 합니다. 이 예제에서는 먼저 데이터 파일이 있는지 여부를 확인합니다. 그렇지 않은 경우 데이터를 만들고 플래그를 reindex
설정합니다. 이는 데이터를 다시 사용하고 저장해야 했음을 나타냅니다. 그렇지 않으면 데이터를 검색하고 저장된 SortVersion 개체를 현재 시스템의 현재 문화권에 대한 개체와 SortVersion 비교합니다. 플래그가 같지 않거나 플래그가 reindex
이전에 설정된 경우 데이터에 의존 RegionInfo 합니다.
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);
}
}
Imports System.Collections
Imports System.Collections.Generic
Imports System.Globalization
Imports System.IO
Imports System.Text
Public Class Example : Implements IComparer
Private Const FILENAME As String = ".\Regions.dat"
Private Structure Region
Friend Sub New(id As String, name As String)
Me.Id = id
Me.NativeName = name
End Sub
Dim Id As String
Dim NativeName As String
Public Overrides Function ToString() As String
Return Me.NativeName
End Function
End Structure
Public Shared Sub Main()
Dim reindex As Boolean = False
Dim regions() As Region
Dim ver As SortVersion = Nothing
' If the data has not been saved, create it.
If Not File.Exists(FILENAME) Then
regions = GenerateData()
ver = CultureInfo.CurrentCulture.CompareInfo.Version
reindex = True
' Retrieve the existing data.
Else
regions = RestoreData(ver)
End If
' Determine whether the current ordering is valid; if not, reorder.
If reindex OrElse ver <> CultureInfo.CurrentCulture.CompareInfo.Version Then
Array.Sort(regions, New Example())
' Save newly reordered data.
SaveData(regions)
End If
' Continue with application...
End Sub
Private Shared Function GenerateData() As Region()
Dim regions As New List(Of Region)()
For Each culture In CultureInfo.GetCultures(CultureTypes.AllCultures)
If culture.IsNeutralCulture Or culture.Equals(CultureInfo.InvariantCulture) Then Continue For
Dim region As New RegionInfo(culture.Name)
regions.Add(New Region(region.Name, region.NativeName))
Next
Return regions.ToArray()
End Function
Private Shared Function RestoreData(ByRef ver As SortVersion) As Region()
Dim regions As New List(Of Region)
Dim rdr As New BinaryReader(File.Open(FILENAME, FileMode.Open))
Dim sortVer As Integer = rdr.ReadInt32
Dim sortId As Guid = Guid.Parse(rdr.ReadString())
ver = New SortVersion(sortVer, sortId)
Dim id As String, name As String
Do While rdr.PeekChar <> -1
id = rdr.ReadString()
name = rdr.ReadString()
regions.Add(New Region(id, name))
Loop
Return regions.ToArray()
End Function
Private Shared Sub SaveData(regions As Region())
Dim ver As SortVersion = CultureInfo.CurrentCulture.CompareInfo.Version
Dim wrtr As New BinaryWriter(File.Open(FILENAME, FileMode.Create))
wrtr.Write(ver.FullVersion)
wrtr.Write(ver.SortId.ToString())
For Each region In regions
wrtr.Write(region.Id)
wrtr.Write(region.NativeName)
Next
wrtr.Close()
End Sub
Private Function SortByNativeName(o1 As Object, o2 As Object) As Integer _
Implements IComparer.Compare
' Assume that all conversions succeed.
Dim r1 As Region = CType(o1, Region)
Dim r2 As Region = CType(o2, Region)
Return String.Compare(r1.NativeName, r2.NativeName,
StringComparison.CurrentCulture)
End Function
End Class
설명
이 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) |
두 개의 SortVersion 인스턴스가 같은지를 표시합니다. |
Inequality(SortVersion, SortVersion) |
두 개의 SortVersion 인스턴스가 같지 않은를 표시합니다. |
적용 대상
추가 정보
.NET