Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Common / Utils / CdpEqualityComparer.cs / 1 / CdpEqualityComparer.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections; using System.Text; using System.Globalization; using System.Data.SqlTypes; using System.Diagnostics; namespace System.Data.Common.Utils { ////// Equality comparer implementation that uses case-sensitive ordinal comparison for strings. /// internal sealed class CdpEqualityComparer : IEqualityComparer { ////// Private constructor to ensure comparer is only accessed through the private CdpEqualityComparer() { } private static readonly IEqualityComparer s_defaultEqualityComparer = new CdpEqualityComparer(); ////// property. /// /// Gets instance of CdpEqualityComparer. /// static internal IEqualityComparer DefaultEqualityComparer { get { return s_defaultEqualityComparer; } } ////// This mirrors the .NET implementation of System.Collections.Comparer but /// uses an ordinal comparer for strings rather than a linguistic compare. /// /// First object to compare /// Second object to compare ///True if the arguments are equivalent; false otherwise bool IEqualityComparer.Equals(object x, object y) { // if the objects are equal by reference, return immediately if (x == y) { return true; } // if either one or the other objects is null, return false // (they cannot both be null, because otherwise the reference equality check // would have succeeded) if (null == x || null == y) { return false; } // if we're dealing with strings, special handling is required string xAsString = x as string; if (null != xAsString) { string yAsString = y as string; if (null != yAsString) { return StringComparer.Ordinal.Equals(xAsString, yAsString); } else { // string implements IComparable, so we can avoid a second cast return 0 == xAsString.CompareTo(y); } } // use first argument as IComparable IComparable xAsComparable = x as IComparable; if (null != xAsComparable) { return 0 == xAsComparable.CompareTo(y); } else { // default to Equals implementation return x.Equals(y); } } ////// Retursn hash code for given object. /// /// Object for which to produce hash code (throws if null) ///Hash code for argument int IEqualityComparer.GetHashCode(object obj) { Debug.Assert(null != obj); return obj.GetHashCode(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections; using System.Text; using System.Globalization; using System.Data.SqlTypes; using System.Diagnostics; namespace System.Data.Common.Utils { ////// Equality comparer implementation that uses case-sensitive ordinal comparison for strings. /// internal sealed class CdpEqualityComparer : IEqualityComparer { ////// Private constructor to ensure comparer is only accessed through the private CdpEqualityComparer() { } private static readonly IEqualityComparer s_defaultEqualityComparer = new CdpEqualityComparer(); ////// property. /// /// Gets instance of CdpEqualityComparer. /// static internal IEqualityComparer DefaultEqualityComparer { get { return s_defaultEqualityComparer; } } ////// This mirrors the .NET implementation of System.Collections.Comparer but /// uses an ordinal comparer for strings rather than a linguistic compare. /// /// First object to compare /// Second object to compare ///True if the arguments are equivalent; false otherwise bool IEqualityComparer.Equals(object x, object y) { // if the objects are equal by reference, return immediately if (x == y) { return true; } // if either one or the other objects is null, return false // (they cannot both be null, because otherwise the reference equality check // would have succeeded) if (null == x || null == y) { return false; } // if we're dealing with strings, special handling is required string xAsString = x as string; if (null != xAsString) { string yAsString = y as string; if (null != yAsString) { return StringComparer.Ordinal.Equals(xAsString, yAsString); } else { // string implements IComparable, so we can avoid a second cast return 0 == xAsString.CompareTo(y); } } // use first argument as IComparable IComparable xAsComparable = x as IComparable; if (null != xAsComparable) { return 0 == xAsComparable.CompareTo(y); } else { // default to Equals implementation return x.Equals(y); } } ////// Retursn hash code for given object. /// /// Object for which to produce hash code (throws if null) ///Hash code for argument int IEqualityComparer.GetHashCode(object obj) { Debug.Assert(null != obj); return obj.GetHashCode(); } } } // 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
- AbstractExpressions.cs
- XsdDuration.cs
- XmlLinkedNode.cs
- PersonalizablePropertyEntry.cs
- ExpressionConverter.cs
- DesignerAttribute.cs
- CacheEntry.cs
- XmlConvert.cs
- Border.cs
- OleDbTransaction.cs
- WebPartAuthorizationEventArgs.cs
- Utils.cs
- MouseGestureConverter.cs
- EventArgs.cs
- EventManager.cs
- AbsoluteQuery.cs
- GenericTypeParameterBuilder.cs
- ChannelOptions.cs
- ActivityTypeDesigner.xaml.cs
- Clause.cs
- SortableBindingList.cs
- ThreadLocal.cs
- IconConverter.cs
- TlsSspiNegotiation.cs
- CmsUtils.cs
- DetailsViewPagerRow.cs
- ProviderCommandInfoUtils.cs
- UrlRoutingModule.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- SrgsToken.cs
- CachedCompositeFamily.cs
- DelegateBodyWriter.cs
- ExceptionUtil.cs
- ClaimTypes.cs
- UriSection.cs
- WebBrowsableAttribute.cs
- HtmlMeta.cs
- Rect.cs
- SqlBulkCopyColumnMappingCollection.cs
- Hyperlink.cs
- Bidi.cs
- SiteMapNodeItemEventArgs.cs
- TimelineGroup.cs
- TextFormatterContext.cs
- EdmToObjectNamespaceMap.cs
- DBAsyncResult.cs
- BaseComponentEditor.cs
- WebPartsSection.cs
- JapaneseLunisolarCalendar.cs
- FakeModelPropertyImpl.cs
- BindingSource.cs
- WindowShowOrOpenTracker.cs
- DaylightTime.cs
- XmlBoundElement.cs
- ECDiffieHellmanPublicKey.cs
- XmlException.cs
- BookmarkScope.cs
- IsolationInterop.cs
- ManagementEventArgs.cs
- CounterSet.cs
- Tokenizer.cs
- Geometry.cs
- ManagementObjectCollection.cs
- MailMessage.cs
- PermissionRequestEvidence.cs
- Freezable.cs
- HtmlWindow.cs
- BindingOperations.cs
- UrlAuthFailedErrorFormatter.cs
- IdleTimeoutMonitor.cs
- WindowsFormsHostAutomationPeer.cs
- ThrowOnMultipleAssignment.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- PageCache.cs
- PagerSettings.cs
- DesignerForm.cs
- DBPropSet.cs
- RemoteWebConfigurationHost.cs
- MultiView.cs
- ComponentTray.cs
- WindowAutomationPeer.cs
- ReadOnlyCollection.cs
- ObservableCollection.cs
- TraceHandlerErrorFormatter.cs
- OleDbParameter.cs
- GifBitmapDecoder.cs
- DesignerAutoFormatCollection.cs
- TableRowCollection.cs
- OdbcHandle.cs
- StrongNameUtility.cs
- ConfigurationManagerInternal.cs
- EditorPart.cs
- OleDbConnection.cs
- Page.cs
- Bitmap.cs
- UnionCqlBlock.cs
- MasterPage.cs
- HierarchicalDataSourceControl.cs
- MailMessage.cs
- IsolatedStorageException.cs