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
- ScrollBar.cs
- IdleTimeoutMonitor.cs
- HasCopySemanticsAttribute.cs
- MessageQueueTransaction.cs
- SafeFileMappingHandle.cs
- DefaultValueConverter.cs
- XPathNodeInfoAtom.cs
- BinaryObjectInfo.cs
- RuleSettings.cs
- TagNameToTypeMapper.cs
- DataViewSettingCollection.cs
- WebBrowserNavigatedEventHandler.cs
- PostBackTrigger.cs
- FixedDocument.cs
- DeploymentSection.cs
- CleanUpVirtualizedItemEventArgs.cs
- RoutingBehavior.cs
- XmlNodeComparer.cs
- ProcessHost.cs
- FrameworkElementAutomationPeer.cs
- PerfCounterSection.cs
- WpfPayload.cs
- Helpers.cs
- FocusTracker.cs
- TreeBuilderXamlTranslator.cs
- CacheAxisQuery.cs
- ChannelListenerBase.cs
- ListControlActionList.cs
- TdsRecordBufferSetter.cs
- MenuItemStyle.cs
- EntityCommandDefinition.cs
- WindowsPrincipal.cs
- LinkTarget.cs
- _UriSyntax.cs
- RelOps.cs
- FilterQuery.cs
- HMACSHA384.cs
- ExceptionHandlerDesigner.cs
- CorrelationTokenInvalidatedHandler.cs
- AnyAllSearchOperator.cs
- PreservationFileWriter.cs
- Rotation3D.cs
- WebBrowser.cs
- XmlDocumentSchema.cs
- ViewManager.cs
- SessionStateContainer.cs
- SizeAnimationUsingKeyFrames.cs
- IdentityReference.cs
- GradientStopCollection.cs
- FormatVersion.cs
- StorageAssociationSetMapping.cs
- CodeIdentifier.cs
- ClientFormsAuthenticationCredentials.cs
- Frame.cs
- PropertyExpression.cs
- SID.cs
- PopupRoot.cs
- GridPattern.cs
- ScrollContentPresenter.cs
- SQLByteStorage.cs
- TextServicesManager.cs
- XmlWellformedWriter.cs
- TextRangeSerialization.cs
- EditorPartCollection.cs
- ControlAdapter.cs
- CFStream.cs
- UmAlQuraCalendar.cs
- SmtpTransport.cs
- Parser.cs
- ServiceMemoryGates.cs
- Classification.cs
- BuildProvidersCompiler.cs
- XmlSchemaNotation.cs
- SHA1.cs
- CalendarTable.cs
- _AutoWebProxyScriptWrapper.cs
- ValidatingPropertiesEventArgs.cs
- ForceCopyBuildProvider.cs
- ClientRolePrincipal.cs
- DefaultParameterValueAttribute.cs
- AssociationSetEnd.cs
- PassportAuthenticationModule.cs
- SafeBuffer.cs
- ParserHooks.cs
- GridSplitter.cs
- ImageCodecInfoPrivate.cs
- TextContainerChangeEventArgs.cs
- SamlDoNotCacheCondition.cs
- CryptoStream.cs
- listitem.cs
- Config.cs
- SqlBulkCopy.cs
- DEREncoding.cs
- PanelStyle.cs
- EmissiveMaterial.cs
- CompositionTarget.cs
- ResolvedKeyFrameEntry.cs
- AnimationClockResource.cs
- MonitoringDescriptionAttribute.cs
- WsdlContractConversionContext.cs