Code:
/ 4.0 / 4.0 / untmp / 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.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MemoryMappedViewAccessor.cs
- NumberFormatInfo.cs
- ModelTreeManager.cs
- DataSvcMapFile.cs
- XmlReader.cs
- AssociationSetEnd.cs
- DateBoldEvent.cs
- GridViewPageEventArgs.cs
- AvtEvent.cs
- FontSource.cs
- TextFormatterImp.cs
- FlowDocumentPage.cs
- AutomationPropertyInfo.cs
- SpecularMaterial.cs
- VariantWrapper.cs
- FormParameter.cs
- UserPreferenceChangedEventArgs.cs
- AttributeProviderAttribute.cs
- FamilyTypeface.cs
- SocketPermission.cs
- MultipartContentParser.cs
- GridSplitter.cs
- ToolStripHighContrastRenderer.cs
- GridViewRowPresenter.cs
- BindMarkupExtensionSerializer.cs
- DataTemplateSelector.cs
- Context.cs
- BitmapEffectInput.cs
- TypeReference.cs
- SiteMapNodeItem.cs
- QueryCacheManager.cs
- Reference.cs
- wgx_exports.cs
- DiagnosticTrace.cs
- DrawingContextWalker.cs
- ToggleButtonAutomationPeer.cs
- Collection.cs
- DataObjectFieldAttribute.cs
- AdPostCacheSubstitution.cs
- ReadOnlyNameValueCollection.cs
- RootProfilePropertySettingsCollection.cs
- _SafeNetHandles.cs
- peernodeimplementation.cs
- isolationinterop.cs
- WindowsGraphicsCacheManager.cs
- WebConfigurationHost.cs
- BrowserCapabilitiesCompiler.cs
- WorkflowValidationFailedException.cs
- DataGrid.cs
- WebBrowserEvent.cs
- XPathNode.cs
- QueryGenerator.cs
- CodeRemoveEventStatement.cs
- GeometryHitTestParameters.cs
- QilStrConcatenator.cs
- CounterSample.cs
- Polygon.cs
- FrameworkContentElementAutomationPeer.cs
- Command.cs
- ParentQuery.cs
- DecimalConverter.cs
- AddInBase.cs
- CommandHelpers.cs
- MiniLockedBorderGlyph.cs
- BitmapSource.cs
- TrustSection.cs
- HandlerWithFactory.cs
- loginstatus.cs
- EdmConstants.cs
- ToolZone.cs
- ReceiveErrorHandling.cs
- Part.cs
- ConstraintEnumerator.cs
- DesignTimeData.cs
- FreezableDefaultValueFactory.cs
- RenderData.cs
- BezierSegment.cs
- SubMenuStyle.cs
- Exception.cs
- IncrementalReadDecoders.cs
- XmlUTF8TextWriter.cs
- UserInitiatedRoutedEventPermission.cs
- PageContentCollection.cs
- LinkArea.cs
- Predicate.cs
- DataGridViewRowCancelEventArgs.cs
- X509Utils.cs
- EventLogEntry.cs
- ImageBrush.cs
- SignedInfo.cs
- FilterQuery.cs
- PointAnimationBase.cs
- OutputScopeManager.cs
- HeaderUtility.cs
- XmlDesigner.cs
- PartialArray.cs
- XmlParserContext.cs
- CAGDesigner.cs
- DataFormat.cs
- OracleString.cs