Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- ColumnCollection.cs
- ProviderMetadata.cs
- DataGridItemCollection.cs
- UpWmlPageAdapter.cs
- ContentFilePart.cs
- DispatcherEventArgs.cs
- PrintDialogException.cs
- TileBrush.cs
- DataSvcMapFileSerializer.cs
- JsonReaderWriterFactory.cs
- BooleanKeyFrameCollection.cs
- EnvelopedSignatureTransform.cs
- ValueExpressions.cs
- DispatcherHookEventArgs.cs
- ModuleElement.cs
- HeaderPanel.cs
- EncodingInfo.cs
- InvalidChannelBindingException.cs
- QueryReaderSettings.cs
- WsiProfilesElementCollection.cs
- ForeignConstraint.cs
- RequestCachingSection.cs
- PaperSource.cs
- RightsManagementEncryptionTransform.cs
- HtmlForm.cs
- StringSorter.cs
- CompatibleComparer.cs
- Blend.cs
- SimpleTypeResolver.cs
- MailAddressParser.cs
- NameSpaceExtractor.cs
- ConvertersCollection.cs
- SignedXml.cs
- TransformCollection.cs
- UnsafeNativeMethods.cs
- Type.cs
- XmlSchemaImporter.cs
- CollectionChangeEventArgs.cs
- QilFunction.cs
- BrowserDefinitionCollection.cs
- DisplayInformation.cs
- AddDataControlFieldDialog.cs
- CopyAction.cs
- DifferencingCollection.cs
- PerformanceCountersBase.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- TransportBindingElementImporter.cs
- BamlLocalizationDictionary.cs
- ValidatorCollection.cs
- FormViewModeEventArgs.cs
- nulltextnavigator.cs
- MinimizableAttributeTypeConverter.cs
- StyleBamlTreeBuilder.cs
- RelationshipEnd.cs
- PeerNameRecordCollection.cs
- sqlcontext.cs
- CaretElement.cs
- MetadataCollection.cs
- Function.cs
- DataSourceXmlSubItemAttribute.cs
- ContentValidator.cs
- DNS.cs
- TraceContextRecord.cs
- WSSecurityOneDotOneReceiveSecurityHeader.cs
- MultipleViewProviderWrapper.cs
- ExecutionTracker.cs
- TypeResolvingOptionsAttribute.cs
- WebBaseEventKeyComparer.cs
- ItemChangedEventArgs.cs
- Clipboard.cs
- AutomationEventArgs.cs
- PageRanges.cs
- NamedPipeActivation.cs
- HttpRequestBase.cs
- FixedStringLookup.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- StateBag.cs
- OracleMonthSpan.cs
- PersonalizationProviderCollection.cs
- StylusCollection.cs
- TrackingValidationObjectDictionary.cs
- AnnotationResource.cs
- ClientConfigurationSystem.cs
- PropertyEmitter.cs
- BroadcastEventHelper.cs
- ContractComponent.cs
- GacUtil.cs
- XpsLiterals.cs
- Drawing.cs
- documentation.cs
- ThumbButtonInfo.cs
- DeclaredTypeValidator.cs
- CheckBoxStandardAdapter.cs
- SID.cs
- DataRowIndexBuffer.cs
- DocumentSchemaValidator.cs
- EntityKey.cs
- Form.cs
- Pair.cs
- StrongNameUtility.cs