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
- WebPartDisplayModeCancelEventArgs.cs
- WebPartTracker.cs
- SoapDocumentMethodAttribute.cs
- DllHostedComPlusServiceHost.cs
- dataprotectionpermission.cs
- DependencyProperty.cs
- XmlBufferReader.cs
- FieldNameLookup.cs
- StructuredProperty.cs
- _Semaphore.cs
- TranslateTransform3D.cs
- UserControl.cs
- MenuStrip.cs
- ThicknessAnimationBase.cs
- NativeCompoundFileAPIs.cs
- ZoneIdentityPermission.cs
- ErasingStroke.cs
- GeometryDrawing.cs
- AudioFormatConverter.cs
- CommentEmitter.cs
- figurelengthconverter.cs
- ObjectListCommandCollection.cs
- cookieexception.cs
- HttpFileCollection.cs
- WorkflowOperationAsyncResult.cs
- ProcessingInstructionAction.cs
- TableRow.cs
- Crypto.cs
- nulltextcontainer.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- ErrorActivity.cs
- ObjectConverter.cs
- ErasingStroke.cs
- DesignerCatalogPartChrome.cs
- SmiGettersStream.cs
- XmlIgnoreAttribute.cs
- Byte.cs
- CodeSubDirectory.cs
- COM2EnumConverter.cs
- ModifierKeysConverter.cs
- ProcessHostConfigUtils.cs
- MatrixAnimationUsingPath.cs
- MiniLockedBorderGlyph.cs
- MsmqElementBase.cs
- PackWebResponse.cs
- PropertyChangedEventArgs.cs
- PropertyChangedEventArgs.cs
- SecurityState.cs
- StreamResourceInfo.cs
- HttpChannelBindingToken.cs
- EntityTypeBase.cs
- DetailsViewDeleteEventArgs.cs
- PartDesigner.cs
- BinHexEncoder.cs
- SmtpReplyReaderFactory.cs
- TypeBrowserDialog.cs
- TemplateControl.cs
- DataGridViewColumn.cs
- HealthMonitoringSection.cs
- EntityContainerEmitter.cs
- WebConfigurationHostFileChange.cs
- FrameworkContentElement.cs
- DictionaryGlobals.cs
- GradientSpreadMethodValidation.cs
- SystemDropShadowChrome.cs
- UncommonField.cs
- ModelProperty.cs
- HttpModulesSection.cs
- DotExpr.cs
- TextDecorationLocationValidation.cs
- OrderedDictionary.cs
- VisualBrush.cs
- Attributes.cs
- XmlSchemaSimpleTypeList.cs
- PrimitiveXmlSerializers.cs
- GlobalizationAssembly.cs
- WebServiceData.cs
- TypeListConverter.cs
- TextTreeTextBlock.cs
- TextWriterEngine.cs
- ImagingCache.cs
- BitVector32.cs
- KeyboardDevice.cs
- TracePayload.cs
- MsmqChannelFactory.cs
- XamlHttpHandlerFactory.cs
- XmlNullResolver.cs
- ResolveMatches11.cs
- EventSetter.cs
- DrawingVisualDrawingContext.cs
- FormViewInsertEventArgs.cs
- WebPartCloseVerb.cs
- ProviderUtil.cs
- OdbcConnectionFactory.cs
- ForEachAction.cs
- ComponentEvent.cs
- NumericUpDown.cs
- DataRowCollection.cs
- DbExpressionRules.cs
- FlagsAttribute.cs