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; ////// 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
- DesignerMetadata.cs
- BamlVersionHeader.cs
- TemplateContentLoader.cs
- Event.cs
- DataSourceCache.cs
- Random.cs
- SoapException.cs
- SqlDependencyUtils.cs
- TCEAdapterGenerator.cs
- RSAPKCS1SignatureDeformatter.cs
- ImageIndexConverter.cs
- CachedPathData.cs
- RegexCharClass.cs
- RsaSecurityTokenAuthenticator.cs
- HttpSessionStateBase.cs
- EntityParameterCollection.cs
- XmlDataSourceView.cs
- Brushes.cs
- OdbcConnectionHandle.cs
- NamespaceEmitter.cs
- UpdateEventArgs.cs
- XmlSchemaSimpleContentExtension.cs
- InstanceData.cs
- WebPartDisplayModeCancelEventArgs.cs
- ClipboardData.cs
- ButtonBaseAutomationPeer.cs
- Decoder.cs
- ConnectivityStatus.cs
- ObservableCollectionDefaultValueFactory.cs
- CurrencyWrapper.cs
- QueryCursorEventArgs.cs
- ActivityIdHeader.cs
- TypeBuilder.cs
- TreeNodeBindingCollection.cs
- TimeSpan.cs
- AnalyzedTree.cs
- RichTextBoxConstants.cs
- BrushConverter.cs
- PagerSettings.cs
- Configuration.cs
- TableRowGroup.cs
- TraceFilter.cs
- SerializationAttributes.cs
- CodeEntryPointMethod.cs
- ClonableStack.cs
- CustomAssemblyResolver.cs
- MD5.cs
- filewebrequest.cs
- DataRowCollection.cs
- SecurityDocument.cs
- WebPartTracker.cs
- AuthenticodeSignatureInformation.cs
- Lazy.cs
- CorruptingExceptionCommon.cs
- CodeCommentStatementCollection.cs
- AxisAngleRotation3D.cs
- XmlAttributeCollection.cs
- DPTypeDescriptorContext.cs
- StrokeNode.cs
- XhtmlBasicTextBoxAdapter.cs
- Context.cs
- ButtonBaseAdapter.cs
- SevenBitStream.cs
- DictationGrammar.cs
- CompoundFileDeflateTransform.cs
- UniqueConstraint.cs
- CustomValidator.cs
- EdmItemCollection.cs
- TableLayoutStyleCollection.cs
- TaskResultSetter.cs
- Vector3DIndependentAnimationStorage.cs
- ValueUnavailableException.cs
- StorageComplexPropertyMapping.cs
- PropertyGridEditorPart.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- ObjectFullSpanRewriter.cs
- RowVisual.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- ObfuscationAttribute.cs
- CodeAttributeDeclaration.cs
- WindowsAuthenticationModule.cs
- WeakReferenceList.cs
- DocumentGridContextMenu.cs
- GlyphingCache.cs
- MulticastOption.cs
- Select.cs
- DataBoundControlActionList.cs
- MatrixTransform3D.cs
- MenuBase.cs
- AddInAdapter.cs
- VectorCollectionConverter.cs
- DiscreteKeyFrames.cs
- ListSortDescriptionCollection.cs
- Content.cs
- SqlDataSourceCustomCommandPanel.cs
- RefreshEventArgs.cs
- XPathDescendantIterator.cs
- ReadOnlyTernaryTree.cs
- StreamGeometryContext.cs
- CommonProperties.cs