Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
Ez a cikk kiegészítő megjegyzéseket tartalmaz az API referenciadokumentációjához.
A két karakterlánc kulturálisan érzékeny összehasonlítása attól függ, hogy a karakterláncok egyes karakterei több rendezési súly kategóriával rendelkeznek, beleértve a szkriptet, betűrendet, kis- és nagybetűket, és diakritikus jelek súlyait. A rendezési kulcs a súlyok tárhelyeként szolgál egy adott karakterlánchoz.
A CompareInfo.GetSortKey metódus az SortKey osztály egy olyan példányát adja vissza, amely egy adott sztringben lévő karakterek kultúraérzékeny leképezését tükrözi. Az SortKey objektum értéke a kulcsadat, amelyet a KeyData tulajdonság ad vissza. Ezek a kulcsadatok egy bájtsorozatból állnak, amely kódolja a karaktersorozatot, a kultúraspecifikus rendezési szabályokat és a felhasználó által meghatározott összehasonlítási lehetőségeket. A rendezési kulcsokat használó összehasonlítás az egyes rendezési kulcsok megfelelő kulcsadatainak bitenkénti összehasonlításából áll. Ha például rendezési kulcsot hoz létre úgy, hogy meghívja a GetSortKey(String, CompareOptions) metódust egy CompareOptions.IgnoreCase értékkel, akkor a rendezési kulcsot használó sztring-összehasonlító művelet esetérzéketlen.
Miután létrehozott egy rendezési kulcsot egy sztringhez, a rendezési kulcsokat a statikus SortKey.Compare metódus meghívásával hasonlíthatja össze. Ez a módszer egyszerű bájtonkénti összehasonlítást végez, így sokkal gyorsabb, mint a String.Compare vagy a CompareInfo.Compare metódus.
Megjegyzés:
Letöltheti a rendezési súlytáblákat, amelyek a Windows operációs rendszerek rendezési és összehasonlító műveleteihez használt karaktervastagságokról, az alapértelmezett Unicode rendezési elemtábláról, a Linux és macOS rendszerhez készült rendezési súlyozási táblázatról tartalmaznak információkat.
Teljesítménnyel kapcsolatos szempontok
Sztring-összehasonlítás során a Compare és a CompareInfo.Compare metódusok ugyanazokat az eredményeket adják, de különböző forgatókönyveket céloznak meg.
Magas szinten a CompareInfo.Compare metódus létrehozza az egyes sztringekhez tartozó rendezési kulcsot, végrehajtja az összehasonlítást, majd elveti a rendezési kulcsot, és visszaadja az összehasonlítás eredményét. A CompareInfo.Compare metódus azonban valójában nem generál teljes rendezési kulcsot az összehasonlítás elvégzéséhez. A metódus ehelyett minden egyes sztringben létrehozza az egyes szövegelemek (azaz alap karakter, helyettesítő pár vagy egyesítő karaktersorozat) kulcsadatait. A metódus ezután összehasonlítja a megfelelő szövegelemek kulcsadatait. A művelet az összehasonlítás végső eredményének meghatározása után azonnal leáll. A rendezési kulcs adatai kiszámításra kerülnek, de nem jön létre SortKey objektum. Ez a stratégia a teljesítmény szempontjából gazdaságos, ha mindkét sztringet egyszer hasonlítják össze, de költségessé válik, ha ugyanazokat a sztringeket sokszor hasonlítják össze.
A Compare metódushoz minden sztringhez létre kell hozatnia egy SortKey objektumot az összehasonlítás végrehajtása előtt. Ez a stratégia teljesítmény szempontjából költséges az első összehasonlításnál, mert jelentős időt és memóriát igényel az SortKey objektumok létrehozása. Azonban gazdaságossá válik, ha ugyanazokat a rendezési kulcsokat sokszor hasonlítják össze.
Tegyük fel például, hogy egy olyan alkalmazást ír, amely egy adatbázistáblában keres arra a sorra, amelyben a sztringalapú indexoszlop egy adott keresési sztringgel egyezik. A táblázat több ezer sort tartalmaz, és a keresési sztring és az egyes sorok indexének összehasonlítása hosszú időt vesz igénybe. Ezért amikor az alkalmazás egy sort és annak indexoszlopát tárolja, az is létrehozza és tárolja az index rendezési kulcsát egy olyan oszlopban, amelynek célja a keresési teljesítmény javítása. Amikor az alkalmazás egy célsort keres, összehasonlítja a keresési sztring rendezési kulcsát az indexsztring rendezési kulcsával ahelyett, hogy összehasonlítja a keresési sztringet az indexsztringgel.
Biztonsági szempontok
A CompareInfo.GetSortKey(String, CompareOptions) metódus visszaad egy SortKey objektumot, amelynek értéke egy adott sztring és CompareOptions érték alapján van meghatározva, valamint az, az alapul szolgáló CompareInfo objektumhoz kapcsolódó kultúrához társított. Ha egy biztonsági döntés a sztringek összehasonlításától vagy az esetek változásától függ, az CompareInfo.GetSortKey(String, CompareOptions) invariáns kultúra módszerével biztosíthatja, hogy a művelet viselkedése konzisztens legyen, függetlenül az operációs rendszer kulturális beállításaitól.
A rendezési kulcs beszerzéséhez kövesse az alábbi lépéseket:
Kérje le az invariáns kultúrát a CultureInfo.InvariantCulture tulajdonságból.
CompareInfo Az invariáns kultúra objektumának lekérése a CultureInfo.CompareInfo tulajdonságból.
Hívja meg a CompareInfo.GetSortKey(String, CompareOptions) metódust.
Az SortKey objektum értékének használata egyenértékű a Windows LCMapString metódus meghívásával a megadott LCMAP_SORTKEY értékkel. Az objektum esetében azonban az SortKey angol karakterek rendezési kulcsai megelőzik a koreai karakterek rendezési kulcsait.
SortKey objektumok szerializálhatók, de csak azért, hogy átjutjanak AppDomain objektumokon. Ha egy alkalmazás szerializál egy SortKey objektumot, az alkalmazásnak újra kell létrehoznia az összes rendezési kulcsot, ha a .NET új verziója van.
A rendezési kulcsokkal kapcsolatos további információkért tekintse meg a Unicode Consortium webhelyén található Unicode Technical Standard #10,"Unicode Collation Algorithm" (Unicode-rendezési algoritmus) című témakört.