Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Util / SymbolEqualComparer.cs / 1305376 / 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
- TemplateBindingExtension.cs
- UnsafeNativeMethods.cs
- TemplatePartAttribute.cs
- ResumeStoryboard.cs
- ProtectedProviderSettings.cs
- HtmlInputControl.cs
- ReflectPropertyDescriptor.cs
- DataViewManagerListItemTypeDescriptor.cs
- TextSelectionProcessor.cs
- ZipFileInfoCollection.cs
- TextServicesLoader.cs
- ExpressionStringBuilder.cs
- ReferentialConstraintRoleElement.cs
- BStrWrapper.cs
- WebException.cs
- ApplicationInfo.cs
- UpDownBase.cs
- SplitterEvent.cs
- ListItemConverter.cs
- EntityCollectionChangedParams.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- VBIdentifierDesigner.xaml.cs
- XmlCountingReader.cs
- PreservationFileWriter.cs
- XmlQueryCardinality.cs
- ConvertersCollection.cs
- MenuAutomationPeer.cs
- ExtendedPropertyCollection.cs
- HtmlControlPersistable.cs
- ProxyGenerator.cs
- HttpCapabilitiesEvaluator.cs
- HelpProvider.cs
- Symbol.cs
- FixedDSBuilder.cs
- GenericIdentity.cs
- HtmlInputFile.cs
- WebZone.cs
- WindowsSolidBrush.cs
- SafeBitVector32.cs
- path.cs
- RedBlackList.cs
- SqlNotificationRequest.cs
- DependencyPropertyValueSerializer.cs
- ProcessExitedException.cs
- NGCPageContentSerializerAsync.cs
- documentation.cs
- DataGridCommandEventArgs.cs
- TextBreakpoint.cs
- FrameworkRichTextComposition.cs
- DataGridCaption.cs
- ViewKeyConstraint.cs
- OneOfScalarConst.cs
- ApplicationFileCodeDomTreeGenerator.cs
- UnitySerializationHolder.cs
- ApplicationId.cs
- PageWrapper.cs
- HyperLinkField.cs
- TreeViewImageKeyConverter.cs
- BoolExpression.cs
- MemberInfoSerializationHolder.cs
- ZipIOFileItemStream.cs
- QEncodedStream.cs
- CollectionViewProxy.cs
- TimelineCollection.cs
- LogEntrySerialization.cs
- CollectionsUtil.cs
- XmlMemberMapping.cs
- WindowsGraphicsWrapper.cs
- TraceHandlerErrorFormatter.cs
- XmlSchemaInclude.cs
- EditingCommands.cs
- Rect3D.cs
- BitmapFrameEncode.cs
- GenericEnumerator.cs
- InputManager.cs
- Emitter.cs
- ScriptResourceMapping.cs
- RelatedCurrencyManager.cs
- SimpleApplicationHost.cs
- DictionaryGlobals.cs
- MdiWindowListStrip.cs
- CompilationUnit.cs
- ToolTip.cs
- AddInAdapter.cs
- WindowsListViewScroll.cs
- XmlCharType.cs
- FormsAuthenticationTicket.cs
- SpanIndex.cs
- UnsafeNativeMethods.cs
- VectorAnimationUsingKeyFrames.cs
- GetWinFXPath.cs
- XsdValidatingReader.cs
- ListMarkerLine.cs
- SelectingProviderEventArgs.cs
- DataRowExtensions.cs
- SqlAliasesReferenced.cs
- TreeViewItemAutomationPeer.cs
- DefaultProxySection.cs
- MessageDecoder.cs
- ChangeBlockUndoRecord.cs