Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Globalization / SortKey.cs / 1305376 / SortKey.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //////////////////////////////////////////////////////////////////////////// // // Class: SortKey // // Purpose: This class implements a set of methods for retrieving // sort key information. // // Date: August 12, 1998 // //////////////////////////////////////////////////////////////////////////// namespace System.Globalization { using System; using System.Runtime.CompilerServices; using System.Runtime.Serialization; using System.Diagnostics.Contracts; [System.Runtime.InteropServices.ComVisible(true)] [Serializable] public class SortKey { //--------------------------------------------------------------------// // Internal Information // //-------------------------------------------------------------------// // // Variables. // // [OptionalField(VersionAdded = 3)] internal String localeName; // locale identifier [OptionalField(VersionAdded = 1)] // LCID field so serialization is Whidbey compatible though we don't officially support it internal int win32LCID; // // Whidbey serialization internal CompareOptions options; // options internal String m_String; // original string internal byte[] m_KeyData; // sortkey data #if !FEATURE_PAL // // The following constructor is designed to be called from CompareInfo to get the // the sort key of specific string for synthetic culture // internal SortKey(String localeName, String str, CompareOptions options, byte[] keyData) { this.m_KeyData = keyData; this.localeName = localeName; this.options = options; this.m_String = str; } #endif // !FEATURE_PAL #if FEATURE_USE_LCID // // [OnSerializing] private void OnSerializing(StreamingContext context) { //set LCID to proper value for Whidbey serialization (no other use) if (win32LCID == 0) { win32LCID = CultureInfo.GetCultureInfo(localeName).LCID; } } // // [OnDeserialized] private void OnDeserialized(StreamingContext context) { //set locale name to proper value after Whidbey deserialization if (String.IsNullOrEmpty(localeName) && win32LCID != 0) { localeName = CultureInfo.GetCultureInfo(win32LCID).Name; } } #endif //FEATURE_USE_LCID //////////////////////////////////////////////////////////////////////// // // GetOriginalString // // Returns the original string used to create the current instance // of SortKey. // //////////////////////////////////////////////////////////////////////// public virtual String OriginalString { get { return (m_String); } } //////////////////////////////////////////////////////////////////////// // // GetKeyData // // Returns a byte array representing the current instance of the // sort key. // //////////////////////////////////////////////////////////////////////// public virtual byte[] KeyData { get { return (byte[])(m_KeyData.Clone()); } } //////////////////////////////////////////////////////////////////////// // // Compare // // Compares the two sort keys. Returns 0 if the two sort keys are // equal, a number less than 0 if sortkey1 is less than sortkey2, // and a number greater than 0 if sortkey1 is greater than sortkey2. // //////////////////////////////////////////////////////////////////////// public static int Compare(SortKey sortkey1, SortKey sortkey2) { if (sortkey1==null || sortkey2==null) { throw new ArgumentNullException((sortkey1==null ? "sortkey1": "sortkey2")); } Contract.EndContractBlock(); byte[] key1Data = sortkey1.m_KeyData; byte[] key2Data = sortkey2.m_KeyData; Contract.Assert(key1Data!=null, "key1Data!=null"); Contract.Assert(key2Data!=null, "key2Data!=null"); if (key1Data.Length == 0) { if (key2Data.Length == 0) { return (0); } return (-1); } if (key2Data.Length == 0) { return (1); } int compLen = (key1Data.Lengthkey2Data[i]) { return (1); } if (key1Data[i] key2Data[i]) { return (1); } if (key1Data[i]
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AppearanceEditorPart.cs
- AppSettingsReader.cs
- DelegateArgumentValue.cs
- ServiceMetadataPublishingElement.cs
- KeyValuePairs.cs
- XmlSchemaExporter.cs
- ContainerUIElement3D.cs
- Stopwatch.cs
- EnumMemberAttribute.cs
- TextTrailingWordEllipsis.cs
- SingleAnimationUsingKeyFrames.cs
- MobileControlsSection.cs
- FilterEventArgs.cs
- CompareValidator.cs
- ProtocolViolationException.cs
- ToolStripItemClickedEventArgs.cs
- WorkflowExecutor.cs
- DataList.cs
- SchemaNamespaceManager.cs
- CultureInfoConverter.cs
- ConsoleEntryPoint.cs
- ToolStripProgressBar.cs
- ApplicationHost.cs
- baseaxisquery.cs
- XmlNamespaceManager.cs
- BitFlagsGenerator.cs
- FaultContractAttribute.cs
- EntityStoreSchemaFilterEntry.cs
- TextRange.cs
- BuildResult.cs
- DbParameterHelper.cs
- PrinterSettings.cs
- CheckPair.cs
- CodePrimitiveExpression.cs
- SHA512.cs
- ApplicationDirectoryMembershipCondition.cs
- TrackingQueryElement.cs
- DbProviderFactoriesConfigurationHandler.cs
- ModelItem.cs
- XamlToRtfWriter.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- TextEmbeddedObject.cs
- Rijndael.cs
- EmptyQuery.cs
- BaseParagraph.cs
- SelectionRangeConverter.cs
- WebPartTracker.cs
- TextComposition.cs
- Point.cs
- MessageSecurityException.cs
- ComponentSerializationService.cs
- DefaultBinder.cs
- LazyInitializer.cs
- Section.cs
- TagPrefixAttribute.cs
- StaticSiteMapProvider.cs
- PhysicalAddress.cs
- ExtenderControl.cs
- MostlySingletonList.cs
- ApplicationServiceManager.cs
- GridViewAutoFormat.cs
- FormatSettings.cs
- MissingMemberException.cs
- RectangleF.cs
- SqlInfoMessageEvent.cs
- MetadataUtilsSmi.cs
- DataGridViewCellConverter.cs
- ToolstripProfessionalRenderer.cs
- NominalTypeEliminator.cs
- HitTestParameters3D.cs
- ComplexLine.cs
- HttpCapabilitiesBase.cs
- IgnoreSectionHandler.cs
- COM2ComponentEditor.cs
- XmlILOptimizerVisitor.cs
- ModuleBuilderData.cs
- ToolStripItemClickedEventArgs.cs
- SplineKeyFrames.cs
- ListSortDescriptionCollection.cs
- DataObjectAttribute.cs
- WeakKeyDictionary.cs
- ContextMenuService.cs
- SchemaElement.cs
- ColorAnimationBase.cs
- BookmarkScopeManager.cs
- ActivityTypeDesigner.xaml.cs
- ViewStateModeByIdAttribute.cs
- _NegoStream.cs
- VirtualDirectoryMappingCollection.cs
- ThemeDictionaryExtension.cs
- InputMethod.cs
- ApplicationServicesHostFactory.cs
- SubpageParagraph.cs
- BufferedGraphicsContext.cs
- PreviewPrintController.cs
- EventRoute.cs
- DiscoveryExceptionDictionary.cs
- _FtpDataStream.cs
- DirectoryLocalQuery.cs
- RenamedEventArgs.cs