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
- ISAPIApplicationHost.cs
- HwndSource.cs
- QilInvoke.cs
- PersistenceMetadataNamespace.cs
- OrderedDictionary.cs
- TraceProvider.cs
- HttpStreamXmlDictionaryReader.cs
- ConfigsHelper.cs
- HttpPostedFileWrapper.cs
- HttpClientCertificate.cs
- EndPoint.cs
- CodeStatement.cs
- CountdownEvent.cs
- ZoneButton.cs
- PaginationProgressEventArgs.cs
- BaseProcessor.cs
- DesignRelation.cs
- GroupItem.cs
- ButtonField.cs
- PriorityChain.cs
- GridViewCommandEventArgs.cs
- WebPartMenu.cs
- AutomationPropertyInfo.cs
- ColorTranslator.cs
- EmptyCollection.cs
- DelegateSerializationHolder.cs
- TokenBasedSet.cs
- DbCommandTree.cs
- DataPagerFieldCommandEventArgs.cs
- NTAccount.cs
- XslNumber.cs
- CacheMemory.cs
- FlowDocumentPageViewerAutomationPeer.cs
- InputLanguage.cs
- Utils.cs
- ServiceAuthorizationBehavior.cs
- TextSegment.cs
- Translator.cs
- InputBinding.cs
- ProtocolsConfigurationHandler.cs
- UseLicense.cs
- Button.cs
- _NTAuthentication.cs
- Opcode.cs
- ServiceReference.cs
- Literal.cs
- PermissionSetTriple.cs
- EventLogInformation.cs
- AsyncOperation.cs
- PlainXmlWriter.cs
- ToolStripDropDown.cs
- TimeSpanMinutesConverter.cs
- BitmapEffectvisualstate.cs
- EntityTypeEmitter.cs
- PropertyTab.cs
- WebPartDescription.cs
- FragmentNavigationEventArgs.cs
- IUnknownConstantAttribute.cs
- DefaultAuthorizationContext.cs
- XmlPreloadedResolver.cs
- ProcessInputEventArgs.cs
- externdll.cs
- CharAnimationBase.cs
- WindowsListBox.cs
- Tile.cs
- WizardDesigner.cs
- EditingCoordinator.cs
- SerTrace.cs
- XmlSchemaDatatype.cs
- HealthMonitoringSectionHelper.cs
- ConfigurationManagerHelper.cs
- NumberFunctions.cs
- NetMsmqBindingElement.cs
- altserialization.cs
- XmlSchemaAppInfo.cs
- DelimitedListTraceListener.cs
- TextSegment.cs
- Triplet.cs
- SetterBase.cs
- DataGridViewRowHeaderCell.cs
- WebAdminConfigurationHelper.cs
- _AutoWebProxyScriptEngine.cs
- ExternalFile.cs
- ColorTransformHelper.cs
- SecurityPolicySection.cs
- WrapperSecurityCommunicationObject.cs
- Publisher.cs
- ServiceManagerHandle.cs
- ExpressionBuilder.cs
- PackageRelationshipCollection.cs
- JavaScriptObjectDeserializer.cs
- compensatingcollection.cs
- EntityClientCacheKey.cs
- CodeDirectiveCollection.cs
- DataGridViewLinkColumn.cs
- DesignerView.cs
- EntityModelBuildProvider.cs
- SHA256Managed.cs
- GenericTypeParameterBuilder.cs
- CacheMemory.cs