Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- SqlConnection.cs
- MobileUserControlDesigner.cs
- OrderedEnumerableRowCollection.cs
- Dictionary.cs
- ListViewGroupConverter.cs
- ServicePointManager.cs
- PerformanceCountersElement.cs
- MULTI_QI.cs
- TraceContextEventArgs.cs
- Variant.cs
- _SslSessionsCache.cs
- QuadraticBezierSegment.cs
- SettingsPropertyCollection.cs
- LateBoundBitmapDecoder.cs
- CompositeControl.cs
- SyndicationSerializer.cs
- WindowsTokenRoleProvider.cs
- StrongNameKeyPair.cs
- XmlSchemaAttributeGroup.cs
- ConfigurationManagerHelper.cs
- ImageSourceConverter.cs
- BrowserPolicyValidator.cs
- DBParameter.cs
- TimeZone.cs
- TreeViewHitTestInfo.cs
- CapabilitiesState.cs
- UserPersonalizationStateInfo.cs
- HashJoinQueryOperatorEnumerator.cs
- DrawingGroup.cs
- CompiledQueryCacheKey.cs
- EditingCoordinator.cs
- ImageAnimator.cs
- HostedTcpTransportManager.cs
- CodeDOMUtility.cs
- ToolBarButtonClickEvent.cs
- TreeNodeMouseHoverEvent.cs
- AssociationTypeEmitter.cs
- QuinticEase.cs
- SystemMulticastIPAddressInformation.cs
- StorageFunctionMapping.cs
- SizeAnimation.cs
- TableCellCollection.cs
- UnmanagedHandle.cs
- WebBrowserNavigatedEventHandler.cs
- StreamHelper.cs
- SelectionUIHandler.cs
- SpellerStatusTable.cs
- DrawListViewSubItemEventArgs.cs
- DesignerForm.cs
- CqlErrorHelper.cs
- FeedUtils.cs
- SmiEventStream.cs
- DoubleAnimationClockResource.cs
- BinaryCommonClasses.cs
- Pts.cs
- ECDsa.cs
- AsyncCodeActivity.cs
- SiteIdentityPermission.cs
- LabelInfo.cs
- XmlSchemaNotation.cs
- RepeatInfo.cs
- InputScopeConverter.cs
- WindowsHyperlink.cs
- OverflowException.cs
- Simplifier.cs
- XPathConvert.cs
- XmlReader.cs
- MobileControlBuilder.cs
- AdCreatedEventArgs.cs
- GestureRecognizer.cs
- coordinatorfactory.cs
- IxmlLineInfo.cs
- ConfigurationManagerHelper.cs
- Rect.cs
- GatewayDefinition.cs
- VideoDrawing.cs
- PropertyKey.cs
- PhysicalOps.cs
- ManualResetEvent.cs
- HwndHostAutomationPeer.cs
- PeerCollaborationPermission.cs
- GeometryConverter.cs
- OwnerDrawPropertyBag.cs
- MarkedHighlightComponent.cs
- DbModificationClause.cs
- QueryResponse.cs
- DataControlField.cs
- TypefaceCollection.cs
- ApplicationDirectory.cs
- WsatConfiguration.cs
- MessageDecoder.cs
- ValidationRule.cs
- ComplexType.cs
- Point.cs
- EntityDataSourceColumn.cs
- Type.cs
- SoapEnumAttribute.cs
- DocumentReference.cs
- bindurihelper.cs
- SequentialUshortCollection.cs