Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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. //------------------------------------------------------------------------------ //[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.[To be supplied.] ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HttpUnhandledOperationInvoker.cs
- ReceiveCompletedEventArgs.cs
- BooleanProjectedSlot.cs
- DrawingGroup.cs
- precedingquery.cs
- ExplicitDiscriminatorMap.cs
- GeneralTransform3DGroup.cs
- GridSplitter.cs
- ApplicationException.cs
- Point.cs
- XmlUTF8TextWriter.cs
- XmlElement.cs
- PropertyGeneratedEventArgs.cs
- TraversalRequest.cs
- DataTable.cs
- ButtonChrome.cs
- BooleanKeyFrameCollection.cs
- ConfigurationSettings.cs
- RepeatInfo.cs
- StylusPointProperties.cs
- DataServiceCollectionOfT.cs
- ToolstripProfessionalRenderer.cs
- StatusBar.cs
- DataBoundControlDesigner.cs
- TableDetailsRow.cs
- MD5CryptoServiceProvider.cs
- DrawingVisualDrawingContext.cs
- returneventsaver.cs
- BindingRestrictions.cs
- XmlQueryContext.cs
- ExecutedRoutedEventArgs.cs
- SqlComparer.cs
- MulticastOption.cs
- StateMachineExecutionState.cs
- TranslateTransform3D.cs
- XmlDataSource.cs
- SoapIncludeAttribute.cs
- _Win32.cs
- MediaElement.cs
- COM2ColorConverter.cs
- XAMLParseException.cs
- X509Utils.cs
- VectorKeyFrameCollection.cs
- XmlAnyElementAttributes.cs
- PassportAuthenticationModule.cs
- MemoryMappedViewAccessor.cs
- OperationResponse.cs
- SecurityPolicySection.cs
- GroupDescription.cs
- SimpleMailWebEventProvider.cs
- TextModifierScope.cs
- XamlStream.cs
- EventMappingSettings.cs
- ChannelParameterCollection.cs
- CustomAttribute.cs
- UpdateInfo.cs
- ADConnectionHelper.cs
- WeakEventTable.cs
- WsdlImporter.cs
- HwndHostAutomationPeer.cs
- Base64Decoder.cs
- EnumUnknown.cs
- ConditionChanges.cs
- BooleanSwitch.cs
- HttpPostClientProtocol.cs
- DesignOnlyAttribute.cs
- AuthStoreRoleProvider.cs
- loginstatus.cs
- AutoResizedEvent.cs
- SelectionRange.cs
- IUnknownConstantAttribute.cs
- Message.cs
- WindowsRegion.cs
- BuildProvider.cs
- IncrementalReadDecoders.cs
- Random.cs
- GridViewSortEventArgs.cs
- SimpleWorkerRequest.cs
- OleDbCommandBuilder.cs
- ToolBarButton.cs
- DrawingBrush.cs
- ScrollBarAutomationPeer.cs
- XhtmlBasicImageAdapter.cs
- AuthorizationRule.cs
- ToolStripPanelRenderEventArgs.cs
- AdPostCacheSubstitution.cs
- WSSecurityOneDotZeroReceiveSecurityHeader.cs
- AttributeEmitter.cs
- AsmxEndpointPickerExtension.cs
- DetailsViewRowCollection.cs
- OpenTypeCommon.cs
- AutomationPatternInfo.cs
- EncoderExceptionFallback.cs
- StringBuilder.cs
- WindowsSolidBrush.cs
- CreateSequenceResponse.cs
- BindingValueChangedEventArgs.cs
- DbProviderConfigurationHandler.cs
- ReturnEventArgs.cs
- BindingSource.cs