Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / 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. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ //[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. // Copyright (c) Microsoft Corporation. All rights reserved.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProviderConnectionPoint.cs
- Hashtable.cs
- UInt16.cs
- StructuralCache.cs
- PersonalizableAttribute.cs
- MasterPageCodeDomTreeGenerator.cs
- TripleDES.cs
- HwndTarget.cs
- DockProviderWrapper.cs
- ProtocolsConfigurationHandler.cs
- XMLSchema.cs
- TimeSpanMinutesConverter.cs
- KeyPressEvent.cs
- Currency.cs
- DesignerSerializationManager.cs
- NavigateEvent.cs
- BeginStoryboard.cs
- LinkedList.cs
- OleDbParameterCollection.cs
- GridView.cs
- Int16Converter.cs
- SafeNativeMethods.cs
- GeneralTransformGroup.cs
- AlternationConverter.cs
- SqlNotificationEventArgs.cs
- PeerHelpers.cs
- COM2PropertyPageUITypeConverter.cs
- Paragraph.cs
- SqlInternalConnectionSmi.cs
- XmlNodeChangedEventArgs.cs
- Stylus.cs
- SettingsAttributeDictionary.cs
- StateWorkerRequest.cs
- Expression.cs
- KoreanLunisolarCalendar.cs
- WindowsTooltip.cs
- PreviewPrintController.cs
- FrameSecurityDescriptor.cs
- MenuAdapter.cs
- RealProxy.cs
- MetadataItemEmitter.cs
- Action.cs
- JournalEntry.cs
- ItemPager.cs
- MaskedTextBox.cs
- ToolboxItemImageConverter.cs
- ScriptComponentDescriptor.cs
- Transform.cs
- BlurBitmapEffect.cs
- URLAttribute.cs
- ModelPropertyDescriptor.cs
- AsmxEndpointPickerExtension.cs
- IntegerValidatorAttribute.cs
- Binding.cs
- SafeSecurityHandles.cs
- ProfileSettings.cs
- StorageMappingItemLoader.cs
- SEHException.cs
- SendActivityValidator.cs
- OutputCacheEntry.cs
- ValueQuery.cs
- Signature.cs
- AssociationEndMember.cs
- TextMarkerSource.cs
- OdbcConnectionFactory.cs
- DataGridView.cs
- SystemGatewayIPAddressInformation.cs
- BaseDataListPage.cs
- BitmapPalettes.cs
- WrappedKeySecurityTokenParameters.cs
- TextFindEngine.cs
- Menu.cs
- SQLDateTimeStorage.cs
- ExpressionReplacer.cs
- AssemblyFilter.cs
- SiteMapPath.cs
- CommandEventArgs.cs
- _LocalDataStore.cs
- PackageDigitalSignatureManager.cs
- XamlGridLengthSerializer.cs
- SafeArrayTypeMismatchException.cs
- ProgressBarRenderer.cs
- XPathSingletonIterator.cs
- Vertex.cs
- ArraySet.cs
- SetIndexBinder.cs
- ControlParser.cs
- SrgsNameValueTag.cs
- NativeMethods.cs
- TextUtf8RawTextWriter.cs
- coordinatorscratchpad.cs
- PriorityBindingExpression.cs
- StatusBarItem.cs
- ScrollData.cs
- PolyQuadraticBezierSegment.cs
- Odbc32.cs
- BasicExpandProvider.cs
- DurableInstanceManager.cs
- PeerValidationBehavior.cs
- EqualityComparer.cs