Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / Util / SymbolEqualComparer.cs / 1 / SymbolEqualComparer.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Util { using System.Collections; using System.Globalization; ////// internal class SymbolEqualComparer: IComparer { ////// For internal use only. This implements a comparison that only /// checks for equalilty, so this should only be used in un-sorted data /// structures like Hastable and ListDictionary. This is a little faster /// than using CaseInsensitiveComparer because it does a strict character by /// character equality chech rather than a sorted comparison. /// ////// internal static readonly IComparer Default = new SymbolEqualComparer(); internal SymbolEqualComparer() { } int IComparer.Compare(object keyLeft, object keyRight) { string sLeft = keyLeft as string; string sRight = keyRight as string; if (sLeft == null) { throw new ArgumentNullException("keyLeft"); } if (sRight == null) { throw new ArgumentNullException("keyRight"); } int lLeft = sLeft.Length; int lRight = sRight.Length; if (lLeft != lRight) { return 1; } for (int i = 0; i < lLeft; i++) { char charLeft = sLeft[i]; char charRight = sRight[i]; if (charLeft == charRight) { continue; } UnicodeCategory catLeft = Char.GetUnicodeCategory(charLeft); UnicodeCategory catRight = Char.GetUnicodeCategory(charRight); if (catLeft == UnicodeCategory.UppercaseLetter && catRight == UnicodeCategory.LowercaseLetter) { if (Char.ToLower(charLeft, CultureInfo.InvariantCulture) == charRight) { continue; } } else if (catRight == UnicodeCategory.UppercaseLetter && catLeft == UnicodeCategory.LowercaseLetter){ if (Char.ToLower(charRight, CultureInfo.InvariantCulture) == charLeft) { continue; } } return 1; } return 0; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ //[To be supplied.] ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Util { using System.Collections; using System.Globalization; ////// internal class SymbolEqualComparer: IComparer { ////// For internal use only. This implements a comparison that only /// checks for equalilty, so this should only be used in un-sorted data /// structures like Hastable and ListDictionary. This is a little faster /// than using CaseInsensitiveComparer because it does a strict character by /// character equality chech rather than a sorted comparison. /// ////// internal static readonly IComparer Default = new SymbolEqualComparer(); internal SymbolEqualComparer() { } int IComparer.Compare(object keyLeft, object keyRight) { string sLeft = keyLeft as string; string sRight = keyRight as string; if (sLeft == null) { throw new ArgumentNullException("keyLeft"); } if (sRight == null) { throw new ArgumentNullException("keyRight"); } int lLeft = sLeft.Length; int lRight = sRight.Length; if (lLeft != lRight) { return 1; } for (int i = 0; i < lLeft; i++) { char charLeft = sLeft[i]; char charRight = sRight[i]; if (charLeft == charRight) { continue; } UnicodeCategory catLeft = Char.GetUnicodeCategory(charLeft); UnicodeCategory catRight = Char.GetUnicodeCategory(charRight); if (catLeft == UnicodeCategory.UppercaseLetter && catRight == UnicodeCategory.LowercaseLetter) { if (Char.ToLower(charLeft, CultureInfo.InvariantCulture) == charRight) { continue; } } else if (catRight == UnicodeCategory.UppercaseLetter && catLeft == UnicodeCategory.LowercaseLetter){ if (Char.ToLower(charRight, CultureInfo.InvariantCulture) == charLeft) { continue; } } return 1; } return 0; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OleDbInfoMessageEvent.cs
- AnnotationResourceCollection.cs
- SafeProcessHandle.cs
- __ComObject.cs
- HttpContextWrapper.cs
- DataTransferEventArgs.cs
- TransportContext.cs
- ApplicationBuildProvider.cs
- SortableBindingList.cs
- Byte.cs
- AuthStoreRoleProvider.cs
- DBConnectionString.cs
- tibetanshape.cs
- MarshalByRefObject.cs
- FrameworkObject.cs
- ProfileGroupSettingsCollection.cs
- nulltextnavigator.cs
- StdValidatorsAndConverters.cs
- InstanceKeyView.cs
- DataTableMappingCollection.cs
- AttributeQuery.cs
- TextServicesProperty.cs
- XmlPreloadedResolver.cs
- ConstructorArgumentAttribute.cs
- UserNameSecurityTokenParameters.cs
- AsyncResult.cs
- BufferBuilder.cs
- CompiledRegexRunner.cs
- ProviderException.cs
- XmlWellformedWriter.cs
- StoragePropertyMapping.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- TextSelectionProcessor.cs
- LayoutEditorPart.cs
- TextViewBase.cs
- AmbientValueAttribute.cs
- SafeRightsManagementHandle.cs
- DecoderBestFitFallback.cs
- WebServiceData.cs
- rsa.cs
- OleDragDropHandler.cs
- ResourceExpressionEditor.cs
- FlowDocumentReaderAutomationPeer.cs
- VersionPair.cs
- FrameworkRichTextComposition.cs
- AppSettingsReader.cs
- ByeOperation11AsyncResult.cs
- XmlEncoding.cs
- CheckBox.cs
- DocumentCollection.cs
- BinaryReader.cs
- LinqDataSourceDeleteEventArgs.cs
- LocalizableResourceBuilder.cs
- RenderDataDrawingContext.cs
- PluggableProtocol.cs
- NativeRightsManagementAPIsStructures.cs
- Int32Collection.cs
- ListBoxItemAutomationPeer.cs
- BamlTreeMap.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- FragmentNavigationEventArgs.cs
- CfgSemanticTag.cs
- AnimationException.cs
- Vector3DCollectionConverter.cs
- ScriptingWebServicesSectionGroup.cs
- QueryableDataSourceView.cs
- ThreadExceptionEvent.cs
- CharKeyFrameCollection.cs
- GeometryCollection.cs
- ipaddressinformationcollection.cs
- BaseTemplateParser.cs
- Group.cs
- SerializationBinder.cs
- WebPartUtil.cs
- Certificate.cs
- DoubleCollectionValueSerializer.cs
- WebReferencesBuildProvider.cs
- TextAction.cs
- PrintPreviewControl.cs
- TraceListeners.cs
- PersonalizationProviderHelper.cs
- XmlWriterSettings.cs
- ZipIOExtraFieldZip64Element.cs
- SizeLimitedCache.cs
- _Rfc2616CacheValidators.cs
- CompilerResults.cs
- OletxCommittableTransaction.cs
- SamlAuthorityBinding.cs
- IPGlobalProperties.cs
- AdjustableArrowCap.cs
- AutoGeneratedField.cs
- SimpleLine.cs
- KeyEventArgs.cs
- RuleProcessor.cs
- WCFServiceClientProxyGenerator.cs
- StatusBarItem.cs
- DataGridViewCellStyleConverter.cs
- SmiConnection.cs
- ProgressBarHighlightConverter.cs
- StylusShape.cs