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
- WinHttpWebProxyFinder.cs
- PropertyKey.cs
- AudioBase.cs
- TagNameToTypeMapper.cs
- FlowSwitchLink.cs
- InheritanceService.cs
- DataGridViewImageColumn.cs
- LambdaCompiler.ControlFlow.cs
- InputProcessorProfilesLoader.cs
- TableRow.cs
- ImageDrawing.cs
- RouteTable.cs
- MessageSmuggler.cs
- GiveFeedbackEvent.cs
- RootBrowserWindow.cs
- ViewUtilities.cs
- DetailsViewInsertedEventArgs.cs
- ToolStripContainer.cs
- PeerCollaboration.cs
- DataProtection.cs
- AxisAngleRotation3D.cs
- WebPartConnectionsCancelEventArgs.cs
- DrawingGroup.cs
- SystemInfo.cs
- HttpFileCollectionBase.cs
- DataRecordObjectView.cs
- HtmlElement.cs
- DuplicateWaitObjectException.cs
- DataKey.cs
- SqlServices.cs
- ReaderWriterLockWrapper.cs
- ValueTypeFixupInfo.cs
- PermissionToken.cs
- RoutedPropertyChangedEventArgs.cs
- TdsParserSafeHandles.cs
- DBConnection.cs
- ReachDocumentSequenceSerializer.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- Font.cs
- MimeBasePart.cs
- WebBrowserSiteBase.cs
- EntityKey.cs
- WeakReferenceList.cs
- HelpProvider.cs
- RepeatButton.cs
- SecurityManager.cs
- GlyphCache.cs
- XmlLanguageConverter.cs
- UiaCoreApi.cs
- MetaType.cs
- ExpressionParser.cs
- SamlAuthorityBinding.cs
- ApplicationBuildProvider.cs
- TrustLevel.cs
- PrintEvent.cs
- XsltContext.cs
- CustomErrorsSection.cs
- DataRecordInfo.cs
- FixedPage.cs
- SimplePropertyEntry.cs
- StdValidatorsAndConverters.cs
- SizeFConverter.cs
- DataGridPagerStyle.cs
- Focus.cs
- FrameAutomationPeer.cs
- IFlowDocumentViewer.cs
- invalidudtexception.cs
- ExecutionEngineException.cs
- Quad.cs
- AssemblyResourceLoader.cs
- CheckBoxBaseAdapter.cs
- InnerItemCollectionView.cs
- GridViewRowCollection.cs
- SmiConnection.cs
- DynamicArgumentDesigner.xaml.cs
- Drawing.cs
- GeneralTransformGroup.cs
- WebPartDisplayMode.cs
- ExceptionUtil.cs
- CounterSet.cs
- SelectionItemProviderWrapper.cs
- SecurityDocument.cs
- RichTextBox.cs
- XamlVector3DCollectionSerializer.cs
- WebDisplayNameAttribute.cs
- LogicalTreeHelper.cs
- CollectionViewGroup.cs
- SafeNativeMemoryHandle.cs
- BuildProvidersCompiler.cs
- ValidatorCompatibilityHelper.cs
- ColumnMapVisitor.cs
- TableStyle.cs
- TypeExtensionConverter.cs
- FileSystemEnumerable.cs
- RawStylusActions.cs
- TextLineBreak.cs
- ObjectView.cs
- ProxyGenerator.cs
- CacheMode.cs
- SelectedCellsCollection.cs