SortKey Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje výsledek mapování řetězce na jeho klíč řazení.
public ref class SortKey sealed
public ref class SortKey
public sealed class SortKey
public class SortKey
[System.Serializable]
public class SortKey
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class SortKey
type SortKey = class
[<System.Serializable>]
type SortKey = class
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SortKey = class
Public NotInheritable Class SortKey
Public Class SortKey
- Dědičnost
-
SortKey
- Atributy
Příklady
Následující příklad porovnává řetězec "llama" pomocí jazykových verzí "en-US" a "es-ES" a tradičních jazykových verzí "en-US" a "es-ES".
using namespace System;
using namespace System::Globalization;
int main()
{
// Creates a SortKey using the en-US culture.
CultureInfo^ MyCI = gcnew CultureInfo( "en-US",false );
CompareInfo^ myComp_enUS = MyCI->CompareInfo;
SortKey^ mySK1 = myComp_enUS->GetSortKey( "llama" );
// Creates a SortKey using the es-ES culture with international sort.
MyCI = gcnew CultureInfo( "es-ES",false );
CompareInfo^ myComp_esES = MyCI->CompareInfo;
SortKey^ mySK2 = myComp_esES->GetSortKey( "llama" );
// Creates a SortKey using the es-ES culture with traditional sort.
MyCI = gcnew CultureInfo( 0x040A,false );
CompareInfo^ myComp_es = MyCI->CompareInfo;
SortKey^ mySK3 = myComp_es->GetSortKey( "llama" );
// Compares the en-US SortKey with each of the es-ES SortKey objects.
Console::WriteLine( "Comparing \"llama\" in en-US and in es-ES with international sort : {0}", SortKey::Compare( mySK1, mySK2 ) );
Console::WriteLine( "Comparing \"llama\" in en-US and in es-ES with traditional sort : {0}", SortKey::Compare( mySK1, mySK3 ) );
}
/*
This code produces the following output.
Comparing S"llama" in en-US and in es-ES with international sort : 0
Comparing S"llama" in en-US and in es-ES with traditional sort : -1
*/
using System;
using System.Globalization;
public class SamplesSortKey {
public static void Main() {
// Creates a SortKey using the en-US culture.
CompareInfo myComp_enUS = new CultureInfo("en-US",false).CompareInfo;
SortKey mySK1 = myComp_enUS.GetSortKey( "llama" );
// Creates a SortKey using the es-ES culture with international sort.
CompareInfo myComp_esES = new CultureInfo("es-ES",false).CompareInfo;
SortKey mySK2 = myComp_esES.GetSortKey( "llama" );
// Creates a SortKey using the es-ES culture with traditional sort.
CompareInfo myComp_es = new CultureInfo(0x040A,false).CompareInfo;
SortKey mySK3 = myComp_es.GetSortKey( "llama" );
// Compares the en-US SortKey with each of the es-ES SortKey objects.
Console.WriteLine( "Comparing \"llama\" in en-US and in es-ES with international sort : {0}", SortKey.Compare( mySK1, mySK2 ) );
Console.WriteLine( "Comparing \"llama\" in en-US and in es-ES with traditional sort : {0}", SortKey.Compare( mySK1, mySK3 ) );
}
}
/*
This code produces the following output.
Comparing "llama" in en-US and in es-ES with international sort : 0
Comparing "llama" in en-US and in es-ES with traditional sort : -1
*/
Imports System.Globalization
Public Class SamplesSortKey
Public Shared Sub Main()
' Creates a SortKey using the en-US culture.
Dim myComp_enUS As CompareInfo = New CultureInfo("en-US", False).CompareInfo
Dim mySK1 As SortKey = myComp_enUS.GetSortKey("llama")
' Creates a SortKey using the es-ES culture with international sort.
Dim myComp_esES As CompareInfo = New CultureInfo("es-ES", False).CompareInfo
Dim mySK2 As SortKey = myComp_esES.GetSortKey("llama")
' Creates a SortKey using the es-ES culture with traditional sort.
Dim myComp_es As CompareInfo = New CultureInfo(&H40A, False).CompareInfo
Dim mySK3 As SortKey = myComp_es.GetSortKey("llama")
' Compares the en-US SortKey with each of the es-ES SortKey objects.
Console.WriteLine("Comparing ""llama"" in en-US and in es-ES with international sort : {0}", SortKey.Compare(mySK1, mySK2))
Console.WriteLine("Comparing ""llama"" in en-US and in es-ES with traditional sort : {0}", SortKey.Compare(mySK1, mySK3))
End Sub
End Class
'This code produces the following output.
'
'Comparing "llama" in en-US and in es-ES with international sort : 0
'Comparing "llama" in en-US and in es-ES with traditional sort : -1
Následující příklad ukazuje, jak můžete třídu použít SortKey ke zlepšení výkonu v aplikaci, která do značné míry závisí na řazení a vyhledávání velkých polí. Příklad vytvoří neuspořádané pole názvů, které v tomto případě obsahuje 13 elementů. Potom uloží klíč řazení každého názvu do paralelního pole, které předá Sort(Array, Array) metodě. Výsledkem je seřazené pole. Příklad pak vyhledá pole pro tři řetězce. Pro každý hledaný řetězec volá metodu GetSortKey(String, CompareOptions) pro načtení klíče řazení řetězce a pak volá metodu Array.FindIndex pro načtení indexu tohoto klíče řazení v poli klíčů řazení. Vzhledem k tomu, že pole názvů a řazení klíčů jsou paralelní, vrácený index je také indexem názvu v names
poli.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
// Define names.
String[] names= { "Adam", "Ignatius", "Batholomew", "Gregory",
"Clement", "Frances", "Harold", "Dalmatius",
"Edgar", "John", "Benedict", "Paul", "George" };
SortKey[] sortKeys = new SortKey[names.Length];
CompareInfo ci = CultureInfo.CurrentCulture.CompareInfo;
for (int ctr = 0; ctr < names.Length; ctr++)
sortKeys[ctr] = ci.GetSortKey(names[ctr], CompareOptions.IgnoreCase);
// Sort array based on value of sort keys.
Array.Sort(names, sortKeys);
Console.WriteLine("Sorted array: ");
foreach (var name in names)
Console.WriteLine(name);
Console.WriteLine();
String[] namesToFind = { "Paul", "PAUL", "Wilberforce" };
Console.WriteLine("Searching an array:");
foreach (var nameToFind in namesToFind) {
SortKey searchKey = ci.GetSortKey(nameToFind, CompareOptions.IgnoreCase);
int index = Array.FindIndex(sortKeys, (x) => x.Equals(searchKey));
if (index >= 0)
Console.WriteLine("{0} found at index {1}: {2}", nameToFind,
index, names[index]);
else
Console.WriteLine("{0} not found", nameToFind);
}
}
}
// The example displays the following output:
// Sorted array:
// Adam
// Batholomew
// Benedict
// Clement
// Dalmatius
// Edgar
// Frances
// George
// Gregory
// Harold
// Ignatius
// John
// Paul
//
// Searching an array:
// Paul found at index 12: Paul
// PAUL found at index 12: Paul
// Wilberforce not found
Imports System.Globalization
Module Example
Public Sub Main()
' Define names.
Dim names() As String = { "Adam", "Ignatius", "Batholomew",
"Gregory", "Clement", "Frances",
"Harold", "Dalmatius", "Edgar",
"John", "Benedict", "Paul", "George" }
Dim sortKeys(names.Length - 1) As SortKey
Dim ci As CompareInfo = CultureInfo.CurrentCulture.CompareInfo
For ctr As Integer = 0 To names.Length - 1
sortKeys(ctr) = ci.GetSortKey(names(ctr), CompareOptions.IgnoreCase)
Next
' Sort array based on value of sort keys.
Array.Sort(names, sortKeys)
Console.WriteLine("Sorted array: ")
For Each name In names
Console.WriteLine(name)
Next
Console.WriteLine()
Dim namesToFind() As String = { "Paul", "PAUL", "Wilberforce" }
Console.WriteLine("Searching an array:")
For Each nameToFind In namesToFind
Dim searchKey As SortKey = ci.GetSortKey(nameToFind, CompareOptions.IgnoreCase)
Dim index As Integer = Array.FindIndex(sortKeys,
Function(x) x.Equals(searchKey))
If index >= 0 Then
Console.WriteLine("{0} found at index {1}: {2}", nameToFind,
index, names(index))
Else
Console.WriteLine("{0} not found", nameToFind)
End If
Next
End Sub
End Module
' The example displays the following output:
' Sorted array:
' Adam
' Batholomew
' Benedict
' Clement
' Dalmatius
' Edgar
' Frances
' George
' Gregory
' Harold
' Ignatius
' John
' Paul
'
' Searching an array:
' Paul found at index 12: Paul
' PAUL found at index 12: Paul
' Wilberforce not found
Poznámky
Další informace o tomto rozhraní API najdete v tématu Doplňkové poznámky k rozhraní API pro SortKey.
Vlastnosti
KeyData |
Získá pole bajtů představující aktuální SortKey objekt. |
OriginalString |
Získá původní řetězec použitý k vytvoření aktuálního SortKey objektu. |
Metody
Compare(SortKey, SortKey) |
Porovná dva klíče řazení. |
Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu SortKey objektu. |
GetHashCode() |
Slouží jako hashovací funkce pro aktuální SortKey objekt, která je vhodná pro hashovací algoritmy a datové struktury, jako je například hashovací tabulka. |
GetType() |
Získá aktuální Type instanci. (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í SortKey objekt. |