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
- JapaneseLunisolarCalendar.cs
- AdRotatorDesigner.cs
- ClientUtils.cs
- ViewStateException.cs
- ClockController.cs
- QueryTaskGroupState.cs
- CustomPopupPlacement.cs
- RevocationPoint.cs
- AssemblyFilter.cs
- StyleConverter.cs
- HtmlWindowCollection.cs
- XmlKeywords.cs
- GridViewUpdateEventArgs.cs
- MasterPage.cs
- EncoderNLS.cs
- SettingsAttributeDictionary.cs
- DataObject.cs
- GradientSpreadMethodValidation.cs
- InstanceDataCollectionCollection.cs
- BuildResultCache.cs
- Line.cs
- AddressHeaderCollectionElement.cs
- DataAdapter.cs
- CorrelationManager.cs
- MembershipAdapter.cs
- OleDbErrorCollection.cs
- ThreadStateException.cs
- xdrvalidator.cs
- SpeechDetectedEventArgs.cs
- InputLanguageCollection.cs
- PerformanceCounterPermissionEntryCollection.cs
- OdbcHandle.cs
- RunInstallerAttribute.cs
- HostTimeoutsElement.cs
- XmlHierarchyData.cs
- ProcessModuleDesigner.cs
- CodePageEncoding.cs
- RegexCaptureCollection.cs
- Quaternion.cs
- PropagationProtocolsTracing.cs
- TypeElement.cs
- SelectionEditor.cs
- PhysicalFontFamily.cs
- HttpStreamMessage.cs
- ReadOnlyCollectionBase.cs
- DateTimeConverter2.cs
- ListDictionary.cs
- HwndSource.cs
- JsonDeserializer.cs
- NavigationPropertyEmitter.cs
- CreateUserWizard.cs
- PropertyTabAttribute.cs
- ServerIdentity.cs
- EntityConnectionStringBuilder.cs
- ViewBox.cs
- FlowDocumentReaderAutomationPeer.cs
- RootProfilePropertySettingsCollection.cs
- DES.cs
- WindowsListViewItemCheckBox.cs
- EntitySqlQueryBuilder.cs
- PrivilegeNotHeldException.cs
- SecurityElement.cs
- TraceLevelStore.cs
- Hash.cs
- SizeIndependentAnimationStorage.cs
- DoubleAnimationBase.cs
- ErrorFormatterPage.cs
- XmlDeclaration.cs
- Mappings.cs
- CompilerInfo.cs
- SoapReflectionImporter.cs
- Route.cs
- Misc.cs
- MD5CryptoServiceProvider.cs
- EmbeddedMailObject.cs
- IImplicitResourceProvider.cs
- TextTreeInsertUndoUnit.cs
- SystemInfo.cs
- BamlBinaryReader.cs
- HostingEnvironmentSection.cs
- PeerInputChannelListener.cs
- SecurityKeyType.cs
- HostSecurityManager.cs
- Regex.cs
- XmlSchemaAny.cs
- LexicalChunk.cs
- SmtpTransport.cs
- DesignerTransactionCloseEvent.cs
- AssemblyInfo.cs
- XmlNamespaceMapping.cs
- TraceSection.cs
- CaseInsensitiveComparer.cs
- FtpRequestCacheValidator.cs
- Int32AnimationBase.cs
- ISFTagAndGuidCache.cs
- ScrollViewer.cs
- SQLInt32Storage.cs
- SiteOfOriginPart.cs
- ServiceHostingEnvironment.cs
- DataTableExtensions.cs