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
- RelationalExpressions.cs
- BaseParser.cs
- FrameworkContentElementAutomationPeer.cs
- HostProtectionPermission.cs
- ILGenerator.cs
- VerificationException.cs
- CmsInterop.cs
- EdmProviderManifest.cs
- MulticastNotSupportedException.cs
- AllMembershipCondition.cs
- WebPartCancelEventArgs.cs
- EventListenerClientSide.cs
- Frame.cs
- Dictionary.cs
- AsymmetricKeyExchangeDeformatter.cs
- InvalidFilterCriteriaException.cs
- HtmlFormWrapper.cs
- ExtenderProvidedPropertyAttribute.cs
- Setter.cs
- SRef.cs
- XMLSyntaxException.cs
- BlockingCollection.cs
- EditorAttributeInfo.cs
- BrowserCapabilitiesFactoryBase.cs
- TypeToken.cs
- TableLayoutPanel.cs
- RectValueSerializer.cs
- RoleService.cs
- WorkflowIdleBehavior.cs
- KeyPressEvent.cs
- SqlConnectionString.cs
- PersonalizationStateInfo.cs
- ImageConverter.cs
- ApplicationProxyInternal.cs
- ClientType.cs
- DockPatternIdentifiers.cs
- RoleGroupCollection.cs
- TabControl.cs
- MetaType.cs
- AuthenticationServiceManager.cs
- UnmanagedHandle.cs
- AppliedDeviceFiltersDialog.cs
- Zone.cs
- TreeNodeStyleCollection.cs
- ObjectResult.cs
- EntitySetBase.cs
- EventMappingSettings.cs
- HtmlWindowCollection.cs
- RuleAttributes.cs
- Activity.cs
- WebAdminConfigurationHelper.cs
- MULTI_QI.cs
- XmlWrappingReader.cs
- Assert.cs
- TextDecorationCollection.cs
- DataGridViewRowsRemovedEventArgs.cs
- _ConnectionGroup.cs
- RangeValuePattern.cs
- MetadataItem.cs
- smtppermission.cs
- TrustManagerMoreInformation.cs
- RootBrowserWindowAutomationPeer.cs
- Line.cs
- Matrix3DConverter.cs
- ClientTargetCollection.cs
- SpellerInterop.cs
- DecimalAnimation.cs
- UndoManager.cs
- ProcessInputEventArgs.cs
- RadioButtonStandardAdapter.cs
- D3DImage.cs
- OutputCacheProfileCollection.cs
- ListParagraph.cs
- PropertyAccessVisitor.cs
- BlurEffect.cs
- HttpRequestCacheValidator.cs
- SystemMulticastIPAddressInformation.cs
- CachingHintValidation.cs
- ChangeConflicts.cs
- ThreadInterruptedException.cs
- RegexCompilationInfo.cs
- XamlFxTrace.cs
- ExtentKey.cs
- LineSegment.cs
- XpsDocument.cs
- ResXResourceSet.cs
- DataServiceQueryOfT.cs
- InternalPermissions.cs
- Button.cs
- DataBindEngine.cs
- PriorityRange.cs
- XmlQuerySequence.cs
- ImmutableAssemblyCacheEntry.cs
- ProxyWebPartManager.cs
- CollectionDataContract.cs
- RuntimeArgumentHandle.cs
- Ref.cs
- Repeater.cs
- UInt16.cs
- EntityViewGenerationAttribute.cs