Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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. //------------------------------------------------------------------------------ //[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.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CollectionViewGroup.cs
- XmlNodeList.cs
- XmlEventCache.cs
- COAUTHINFO.cs
- InternalRelationshipCollection.cs
- ITreeGenerator.cs
- SecurityUtils.cs
- PtsHelper.cs
- RegionData.cs
- ConditionCollection.cs
- CodeCastExpression.cs
- ClipboardData.cs
- ActivationArguments.cs
- tooltip.cs
- EditorPartChrome.cs
- Scene3D.cs
- DataGridViewCellFormattingEventArgs.cs
- AuthenticationModulesSection.cs
- XmlKeywords.cs
- RotateTransform.cs
- XmlCompatibilityReader.cs
- PrivateFontCollection.cs
- __ComObject.cs
- LineInfo.cs
- FileChangeNotifier.cs
- XmlDigitalSignatureProcessor.cs
- SafeBitVector32.cs
- ErrorWebPart.cs
- CodeObject.cs
- QueryComponents.cs
- Descriptor.cs
- CodeSnippetCompileUnit.cs
- PeerCollaborationPermission.cs
- BmpBitmapEncoder.cs
- StyleBamlRecordReader.cs
- PolyQuadraticBezierSegment.cs
- WebPartsPersonalization.cs
- serverconfig.cs
- ControlIdConverter.cs
- ToolBarOverflowPanel.cs
- StoryFragments.cs
- DataContractSerializerSection.cs
- RijndaelManagedTransform.cs
- CorrelationService.cs
- WebPartZoneAutoFormat.cs
- MenuItem.cs
- FileDialog_Vista_Interop.cs
- HMACSHA256.cs
- SafeTokenHandle.cs
- SymLanguageVendor.cs
- SoapWriter.cs
- ClipboardProcessor.cs
- VisualStyleInformation.cs
- RemotingSurrogateSelector.cs
- Viewport3DAutomationPeer.cs
- DetailsViewCommandEventArgs.cs
- printdlgexmarshaler.cs
- SecurityDescriptor.cs
- IdentityValidationException.cs
- TaskFactory.cs
- DeclaredTypeValidator.cs
- ScrollContentPresenter.cs
- TileBrush.cs
- DataGridAddNewRow.cs
- XmlSchemaChoice.cs
- DiscoveryDocumentReference.cs
- BamlStream.cs
- SecurityTokenReferenceStyle.cs
- AssemblyName.cs
- XmlResolver.cs
- TextTreeFixupNode.cs
- OptimizerPatterns.cs
- EdmRelationshipRoleAttribute.cs
- FixedPageStructure.cs
- FormViewPagerRow.cs
- LogicalExpr.cs
- DisplayNameAttribute.cs
- Camera.cs
- X509CertificateTrustedIssuerElement.cs
- RelatedCurrencyManager.cs
- PropertyValidationContext.cs
- GeometryModel3D.cs
- HttpListener.cs
- MasterPage.cs
- DefaultEventAttribute.cs
- TableRowCollection.cs
- DocumentPageView.cs
- ResXFileRef.cs
- TreeNode.cs
- ServiceObjectContainer.cs
- CheckBoxField.cs
- _SecureChannel.cs
- XmlIlTypeHelper.cs
- TraceContextRecord.cs
- TypeInitializationException.cs
- Encoding.cs
- SchemaDeclBase.cs
- PropertyNames.cs
- ReachSerializationCacheItems.cs
- XmlReturnWriter.cs