Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / 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;
///
///
/// 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 class SymbolEqualComparer: IComparer {
///
/// [To be supplied.]
///
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SmtpSpecifiedPickupDirectoryElement.cs
- ErrorHandler.cs
- ConstructorNeedsTagAttribute.cs
- HScrollProperties.cs
- Thickness.cs
- BaseProcessor.cs
- DataGridViewControlCollection.cs
- EntityDataSourceState.cs
- NTAccount.cs
- ManualWorkflowSchedulerService.cs
- DataBindingExpressionBuilder.cs
- ImageMapEventArgs.cs
- DataBindingExpressionBuilder.cs
- RegularExpressionValidator.cs
- XamlReaderConstants.cs
- FigureParaClient.cs
- TextRunTypographyProperties.cs
- Camera.cs
- EdmComplexTypeAttribute.cs
- ConstraintEnumerator.cs
- DoubleAnimation.cs
- OpenTypeMethods.cs
- Mouse.cs
- CodeAttributeDeclaration.cs
- SrgsOneOf.cs
- PresentationTraceSources.cs
- SqlBulkCopyColumnMapping.cs
- ConvertersCollection.cs
- UrlPath.cs
- ScriptControlDescriptor.cs
- dtdvalidator.cs
- SoapAttributeOverrides.cs
- ServiceModelDictionary.cs
- MouseOverProperty.cs
- BindingContext.cs
- ImportFileRequest.cs
- SqlClientPermission.cs
- EntityDataSourceStatementEditorForm.cs
- MinimizableAttributeTypeConverter.cs
- ClusterSafeNativeMethods.cs
- DataGridViewRowConverter.cs
- ChannelManager.cs
- OuterGlowBitmapEffect.cs
- ParentQuery.cs
- DataBoundControl.cs
- SqlDataReader.cs
- LineUtil.cs
- SystemThemeKey.cs
- EntityContainerRelationshipSet.cs
- TargetControlTypeCache.cs
- ValidatedControlConverter.cs
- XdrBuilder.cs
- PanningMessageFilter.cs
- Merger.cs
- MethodCallConverter.cs
- StorageAssociationTypeMapping.cs
- PageSettings.cs
- UnionQueryOperator.cs
- DebuggerAttributes.cs
- XmlElementAttribute.cs
- ListViewTableCell.cs
- SqlUdtInfo.cs
- DynamicField.cs
- StartUpEventArgs.cs
- GridViewRowPresenterBase.cs
- BitmapSizeOptions.cs
- MailHeaderInfo.cs
- ConfigurationElementProperty.cs
- NamespaceList.cs
- TextAdaptor.cs
- ReceiveContextCollection.cs
- SmtpSection.cs
- Timer.cs
- XmlEntity.cs
- BatchServiceHost.cs
- WebPartCatalogCloseVerb.cs
- WebPartConnection.cs
- PerformanceCounterPermission.cs
- GraphicsContext.cs
- ProcessThreadCollection.cs
- OleServicesContext.cs
- EventItfInfo.cs
- MimeBasePart.cs
- ControlFilterExpression.cs
- GridViewHeaderRowPresenter.cs
- RijndaelManagedTransform.cs
- ExpandableObjectConverter.cs
- MetaModel.cs
- GridLengthConverter.cs
- EventLogPermissionEntry.cs
- ListItemConverter.cs
- HtmlContainerControl.cs
- XmlFormatReaderGenerator.cs
- PbrsForward.cs
- SafeRegistryHandle.cs
- ConfigXmlWhitespace.cs
- TargetFrameworkUtil.cs
- TableDetailsRow.cs
- WebServiceErrorEvent.cs
- IHttpResponseInternal.cs