Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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.
//
//-----------------------------------------------------------------------------
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PowerModeChangedEventArgs.cs
- RequestTimeoutManager.cs
- StreamingContext.cs
- TagPrefixInfo.cs
- HttpModulesSection.cs
- ResourceManager.cs
- ExecutedRoutedEventArgs.cs
- _FixedSizeReader.cs
- _NativeSSPI.cs
- FrameSecurityDescriptor.cs
- ArrangedElement.cs
- MarkupCompiler.cs
- CallbackHandler.cs
- LocalizationParserHooks.cs
- XamlPoint3DCollectionSerializer.cs
- xmlfixedPageInfo.cs
- LocalIdKeyIdentifierClause.cs
- XPathScanner.cs
- ConfigurationSchemaErrors.cs
- PackageProperties.cs
- ReferenceConverter.cs
- CounterSample.cs
- IntSecurity.cs
- OpenFileDialog.cs
- Variant.cs
- ToolStripHighContrastRenderer.cs
- XPathNavigatorReader.cs
- RegisteredExpandoAttribute.cs
- CLSCompliantAttribute.cs
- ProofTokenCryptoHandle.cs
- ContentPosition.cs
- Geometry3D.cs
- CallbackValidatorAttribute.cs
- ProviderUtil.cs
- InheritanceAttribute.cs
- unsafenativemethodsother.cs
- Path.cs
- StorageBasedPackageProperties.cs
- UpdateExpressionVisitor.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- DataFormat.cs
- EncoderNLS.cs
- userdatakeys.cs
- oledbmetadatacollectionnames.cs
- ProvidersHelper.cs
- UInt16.cs
- PlatformNotSupportedException.cs
- ToolStripScrollButton.cs
- SoapIncludeAttribute.cs
- HtmlTableCell.cs
- StaticSiteMapProvider.cs
- SiteMapNodeCollection.cs
- CompiledAction.cs
- CursorConverter.cs
- ProxySimple.cs
- RawStylusActions.cs
- DetailsViewInsertedEventArgs.cs
- PrintController.cs
- ValuePatternIdentifiers.cs
- CommandTreeTypeHelper.cs
- ReflectEventDescriptor.cs
- SurrogateChar.cs
- PointHitTestParameters.cs
- PkcsUtils.cs
- UriWriter.cs
- RenderDataDrawingContext.cs
- SqlDuplicator.cs
- DataGridViewTopLeftHeaderCell.cs
- XmlDataSourceView.cs
- HttpProtocolImporter.cs
- ScrollBarRenderer.cs
- RealProxy.cs
- StylusPlugin.cs
- Margins.cs
- Lookup.cs
- SafeNativeHandle.cs
- DifferencingCollection.cs
- safemediahandle.cs
- NotConverter.cs
- TemplateControlBuildProvider.cs
- GridViewEditEventArgs.cs
- DPCustomTypeDescriptor.cs
- NumberFormatInfo.cs
- RawStylusSystemGestureInputReport.cs
- Matrix3DStack.cs
- DBCSCodePageEncoding.cs
- SplineKeyFrames.cs
- EmptyReadOnlyDictionaryInternal.cs
- SqlError.cs
- DataGridRow.cs
- EdmSchemaError.cs
- TableStyle.cs
- RTTypeWrapper.cs
- ToolStripDropDownItem.cs
- TextHintingModeValidation.cs
- ScriptingSectionGroup.cs
- CapabilitiesRule.cs
- AssemblyAssociatedContentFileAttribute.cs
- TextEvent.cs
- EventHandlerService.cs