Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- Version.cs
- XPathNodeInfoAtom.cs
- MediaSystem.cs
- CompilerParameters.cs
- XmlReflectionMember.cs
- XmlChildEnumerator.cs
- MulticastDelegate.cs
- DateTimeSerializationSection.cs
- XmlSchemaObjectCollection.cs
- SubMenuStyle.cs
- ClientSettings.cs
- AppDomainManager.cs
- RowToParametersTransformer.cs
- RuntimeConfig.cs
- InitializeCorrelation.cs
- PackageDigitalSignature.cs
- Int32.cs
- ConfigurationElementCollection.cs
- Rotation3DAnimation.cs
- PLINQETWProvider.cs
- ListViewHitTestInfo.cs
- SetterBase.cs
- Html32TextWriter.cs
- VisualTransition.cs
- MemberRelationshipService.cs
- ResolveDuplexCD1AsyncResult.cs
- HtmlInputButton.cs
- _emptywebproxy.cs
- NavigationFailedEventArgs.cs
- RegexCompilationInfo.cs
- Control.cs
- Operator.cs
- CookieHandler.cs
- ObjectQueryState.cs
- UInt16.cs
- ValidatorUtils.cs
- DoWorkEventArgs.cs
- DesignerSerializerAttribute.cs
- ListViewPagedDataSource.cs
- RectAnimation.cs
- updateconfighost.cs
- ObjectDataSource.cs
- QueryExecutionOption.cs
- Statements.cs
- PostBackOptions.cs
- SapiRecoInterop.cs
- HwndHostAutomationPeer.cs
- PopOutPanel.cs
- URLMembershipCondition.cs
- OrderedHashRepartitionStream.cs
- OleDbMetaDataFactory.cs
- RowToFieldTransformer.cs
- RawMouseInputReport.cs
- AddInServer.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- ReadWriteSpinLock.cs
- SynchronizationHandlesCodeDomSerializer.cs
- SoapSchemaMember.cs
- DataControlPagerLinkButton.cs
- SqlHelper.cs
- EncodingTable.cs
- HtmlAnchor.cs
- ImageSource.cs
- TabPage.cs
- CodeIterationStatement.cs
- ThreadStateException.cs
- Link.cs
- ASCIIEncoding.cs
- ExpressionCopier.cs
- XmlIgnoreAttribute.cs
- ModifiableIteratorCollection.cs
- BoundsDrawingContextWalker.cs
- WebPartMenuStyle.cs
- RtfToken.cs
- XmlDataSourceView.cs
- XmlBinaryReader.cs
- TerminateDesigner.cs
- EntityDataSourceChangingEventArgs.cs
- RegistryExceptionHelper.cs
- HtmlTitle.cs
- BinHexDecoder.cs
- MailMessageEventArgs.cs
- RotateTransform3D.cs
- PropertyManager.cs
- SqlServer2KCompatibilityAnnotation.cs
- PointUtil.cs
- SqlTrackingQuery.cs
- TypedReference.cs
- NullReferenceException.cs
- SqlDataSourceCache.cs
- IsolatedStorageFileStream.cs
- NetworkCredential.cs
- CorrelationManager.cs
- PriorityQueue.cs
- SoapExtensionTypeElementCollection.cs
- StyleXamlParser.cs
- SymmetricAlgorithm.cs
- BrowserDefinition.cs
- RawKeyboardInputReport.cs
- RowsCopiedEventArgs.cs