Code:
/ 4.0 / 4.0 / untmp / 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]
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- IisTraceWebEventProvider.cs
- PersonalizationEntry.cs
- NameValueCache.cs
- DataControlImageButton.cs
- VisualProxy.cs
- ExceptionValidationRule.cs
- ErrorInfoXmlDocument.cs
- TrustManager.cs
- CookielessHelper.cs
- MetadataPropertyAttribute.cs
- CustomErrorsSectionWrapper.cs
- ChainedAsyncResult.cs
- FixedLineResult.cs
- RoleGroup.cs
- RemotingException.cs
- Pair.cs
- SoapExtensionTypeElement.cs
- SafeTokenHandle.cs
- WebBrowserDocumentCompletedEventHandler.cs
- XmlnsCache.cs
- EdmItemCollection.cs
- XmlILIndex.cs
- IdnMapping.cs
- TiffBitmapEncoder.cs
- AssemblyBuilder.cs
- ToolboxItem.cs
- Inline.cs
- HostedTcpTransportManager.cs
- ByteFacetDescriptionElement.cs
- Cursors.cs
- ValidatingReaderNodeData.cs
- SimpleExpression.cs
- CodeBinaryOperatorExpression.cs
- InlinedAggregationOperatorEnumerator.cs
- GridItemPatternIdentifiers.cs
- FontStretch.cs
- WebPartCatalogCloseVerb.cs
- FragmentNavigationEventArgs.cs
- DataGridViewCellValidatingEventArgs.cs
- ToolStripDropDownItem.cs
- Logging.cs
- Soap12ServerProtocol.cs
- SoapHeaderAttribute.cs
- AllMembershipCondition.cs
- OptionUsage.cs
- EventNotify.cs
- CodeStatement.cs
- LocalizationComments.cs
- EntityTransaction.cs
- DeriveBytes.cs
- LinkLabelLinkClickedEvent.cs
- LicenseContext.cs
- ClientBuildManager.cs
- ReachDocumentPageSerializerAsync.cs
- SerializableAttribute.cs
- BinaryObjectWriter.cs
- XmlSerializerFactory.cs
- _TransmitFileOverlappedAsyncResult.cs
- EntityClassGenerator.cs
- RequestCacheEntry.cs
- SelectionProcessor.cs
- SHA1CryptoServiceProvider.cs
- InstanceCompleteException.cs
- ContractHandle.cs
- SvcMapFileSerializer.cs
- KerberosSecurityTokenProvider.cs
- Monitor.cs
- NameService.cs
- TypeConstant.cs
- NotifyParentPropertyAttribute.cs
- dbenumerator.cs
- TabControlEvent.cs
- NetworkInformationException.cs
- FieldMetadata.cs
- FilterQuery.cs
- WebControlAdapter.cs
- ProcessInfo.cs
- SpecialFolderEnumConverter.cs
- FrugalList.cs
- GifBitmapDecoder.cs
- BamlTreeMap.cs
- CollectionChangeEventArgs.cs
- DataGridViewAccessibleObject.cs
- ServiceHost.cs
- ImageBrush.cs
- Nullable.cs
- SizeAnimationBase.cs
- HtmlInputPassword.cs
- ReachDocumentReferenceCollectionSerializer.cs
- BuildDependencySet.cs
- DataGridCellEditEndingEventArgs.cs
- CorrelationManager.cs
- PageThemeCodeDomTreeGenerator.cs
- EFDataModelProvider.cs
- ComponentChangedEvent.cs
- PermissionToken.cs
- ArrayMergeHelper.cs
- GridViewRowEventArgs.cs
- FixedSOMGroup.cs
- TypeElement.cs