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
- ToolStripLabel.cs
- RangeValidator.cs
- X509Chain.cs
- DataGridAddNewRow.cs
- XmlUtil.cs
- DataGridItemEventArgs.cs
- AbsoluteQuery.cs
- MethodRental.cs
- CreateUserErrorEventArgs.cs
- AlphaSortedEnumConverter.cs
- RegistrationContext.cs
- CodePageEncoding.cs
- XmlChildNodes.cs
- Application.cs
- ReadOnlyDictionary.cs
- HelpProvider.cs
- RectAnimation.cs
- PointIndependentAnimationStorage.cs
- AnnotationComponentChooser.cs
- Utils.cs
- MemoryStream.cs
- DrawingContextFlattener.cs
- XmlElementAttribute.cs
- ColorMap.cs
- GridViewAutomationPeer.cs
- MessageBuffer.cs
- AmbientValueAttribute.cs
- DataGridAddNewRow.cs
- CultureInfo.cs
- InvalidComObjectException.cs
- FrameworkElementFactoryMarkupObject.cs
- IdentifierService.cs
- UrlPath.cs
- TableLayoutCellPaintEventArgs.cs
- AlgoModule.cs
- UrlMapping.cs
- odbcmetadatacolumnnames.cs
- OwnerDrawPropertyBag.cs
- DeadCharTextComposition.cs
- TrackingMemoryStream.cs
- Rfc2898DeriveBytes.cs
- SocketSettings.cs
- HwndProxyElementProvider.cs
- XmlSignatureProperties.cs
- TextMarkerSource.cs
- PowerModeChangedEventArgs.cs
- FormattedText.cs
- GetUserPreferenceRequest.cs
- ImageDrawing.cs
- ValidatorCompatibilityHelper.cs
- DBConcurrencyException.cs
- SafeEventLogReadHandle.cs
- XmlSortKey.cs
- XsltFunctions.cs
- _Events.cs
- RenderDataDrawingContext.cs
- TextEditorThreadLocalStore.cs
- Maps.cs
- HybridDictionary.cs
- BlobPersonalizationState.cs
- Selection.cs
- DrawingAttributesDefaultValueFactory.cs
- MultilineStringConverter.cs
- XmlSerializerSection.cs
- NopReturnReader.cs
- ProtocolReflector.cs
- TypeDelegator.cs
- WpfXamlType.cs
- DataGridViewDataConnection.cs
- SQLConvert.cs
- DefaultEvaluationContext.cs
- Visitors.cs
- HtmlTableCell.cs
- GroupPartitionExpr.cs
- CheckBoxField.cs
- FormatConvertedBitmap.cs
- RSACryptoServiceProvider.cs
- ApplicationBuildProvider.cs
- SoapExtensionReflector.cs
- CustomAttributeFormatException.cs
- Rect3D.cs
- WindowsIdentity.cs
- Encoder.cs
- BackStopAuthenticationModule.cs
- Int32AnimationBase.cs
- Ops.cs
- BitmapEffect.cs
- SerializableAttribute.cs
- GlobalProxySelection.cs
- LogicalExpressionTypeConverter.cs
- DependencyObjectType.cs
- PipelineComponent.cs
- Ray3DHitTestResult.cs
- DesignTimeDataBinding.cs
- FastEncoderWindow.cs
- ClientConfigurationSystem.cs
- ProcessHostServerConfig.cs
- ButtonBase.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- InputLanguageSource.cs