Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Collections / Comparer.cs / 1305376 / Comparer.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: Comparer ** **[....] ** ** ** Purpose: Default IComparer implementation. ** ** ===========================================================*/ namespace System.Collections { using System; using System.Globalization; using System.Runtime.Serialization; using System.Security.Permissions; using System.Diagnostics.Contracts; [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public sealed class Comparer : IComparer , ISerializable { private CompareInfo m_compareInfo; public static readonly Comparer Default = new Comparer(CultureInfo.CurrentCulture); public static readonly Comparer DefaultInvariant = new Comparer(CultureInfo.InvariantCulture); private const String CompareInfoName = "CompareInfo"; private Comparer() { m_compareInfo = null; } public Comparer(CultureInfo culture) { if (culture==null) { throw new ArgumentNullException("culture"); } Contract.EndContractBlock(); m_compareInfo = culture.CompareInfo; } private Comparer(SerializationInfo info, StreamingContext context) { m_compareInfo = null; SerializationInfoEnumerator enumerator = info.GetEnumerator(); while( enumerator.MoveNext()) { switch( enumerator.Name) { case CompareInfoName: m_compareInfo = (CompareInfo) info.GetValue(CompareInfoName, typeof(CompareInfo)); break; } } } // Compares two Objects by calling CompareTo. If a == // b,0 is returned. If a implements // IComparable, a.CompareTo(b) is returned. If a // doesn't implement IComparable and b does, // -(b.CompareTo(a)) is returned, otherwise an // exception is thrown. // public int Compare(Object a, Object b) { if (a == b) return 0; if (a == null) return -1; if (b == null) return 1; if (m_compareInfo != null) { String sa = a as String; String sb = b as String; if (sa != null && sb != null) return m_compareInfo.Compare(sa, sb); } IComparable ia = a as IComparable; if (ia != null) return ia.CompareTo(b); throw new ArgumentException(Environment.GetResourceString("Argument_ImplementIComparable")); } [System.Security.SecurityCritical] // auto-generated_required public void GetObjectData(SerializationInfo info, StreamingContext context) { if (info==null) { throw new ArgumentNullException("info"); } Contract.EndContractBlock(); if( m_compareInfo != null) { info.AddValue(CompareInfoName, m_compareInfo); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: Comparer ** **[....] ** ** ** Purpose: Default IComparer implementation. ** ** ===========================================================*/ namespace System.Collections { using System; using System.Globalization; using System.Runtime.Serialization; using System.Security.Permissions; using System.Diagnostics.Contracts; [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public sealed class Comparer : IComparer , ISerializable { private CompareInfo m_compareInfo; public static readonly Comparer Default = new Comparer(CultureInfo.CurrentCulture); public static readonly Comparer DefaultInvariant = new Comparer(CultureInfo.InvariantCulture); private const String CompareInfoName = "CompareInfo"; private Comparer() { m_compareInfo = null; } public Comparer(CultureInfo culture) { if (culture==null) { throw new ArgumentNullException("culture"); } Contract.EndContractBlock(); m_compareInfo = culture.CompareInfo; } private Comparer(SerializationInfo info, StreamingContext context) { m_compareInfo = null; SerializationInfoEnumerator enumerator = info.GetEnumerator(); while( enumerator.MoveNext()) { switch( enumerator.Name) { case CompareInfoName: m_compareInfo = (CompareInfo) info.GetValue(CompareInfoName, typeof(CompareInfo)); break; } } } // Compares two Objects by calling CompareTo. If a == // b,0 is returned. If a implements // IComparable, a.CompareTo(b) is returned. If a // doesn't implement IComparable and b does, // -(b.CompareTo(a)) is returned, otherwise an // exception is thrown. // public int Compare(Object a, Object b) { if (a == b) return 0; if (a == null) return -1; if (b == null) return 1; if (m_compareInfo != null) { String sa = a as String; String sb = b as String; if (sa != null && sb != null) return m_compareInfo.Compare(sa, sb); } IComparable ia = a as IComparable; if (ia != null) return ia.CompareTo(b); throw new ArgumentException(Environment.GetResourceString("Argument_ImplementIComparable")); } [System.Security.SecurityCritical] // auto-generated_required public void GetObjectData(SerializationInfo info, StreamingContext context) { if (info==null) { throw new ArgumentNullException("info"); } Contract.EndContractBlock(); if( m_compareInfo != null) { info.AddValue(CompareInfoName, m_compareInfo); } } } } // 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
- SendReply.cs
- ComponentTray.cs
- XmlDocumentSchema.cs
- FaultConverter.cs
- DataGridViewSortCompareEventArgs.cs
- RuntimeHandles.cs
- HttpHandlerAction.cs
- CharAnimationBase.cs
- ConvertersCollection.cs
- DiscoveryExceptionDictionary.cs
- TextMarkerSource.cs
- TranslateTransform3D.cs
- ByteBufferPool.cs
- XmlSerializationReader.cs
- Util.cs
- Line.cs
- SmtpTransport.cs
- SaveFileDialogDesigner.cs
- TemplateModeChangedEventArgs.cs
- SortedList.cs
- HeaderedItemsControl.cs
- WeakEventManager.cs
- XamlFilter.cs
- SHA384.cs
- AsymmetricKeyExchangeDeformatter.cs
- PartitionedStream.cs
- NameValueConfigurationCollection.cs
- FieldToken.cs
- followingsibling.cs
- ComponentEditorForm.cs
- ExplicitDiscriminatorMap.cs
- DataReceivedEventArgs.cs
- ApplicationSecurityManager.cs
- ProxyGenerationError.cs
- StylusPointDescription.cs
- KeyGesture.cs
- VBIdentifierName.cs
- StateDesigner.CommentLayoutGlyph.cs
- ObjectKeyFrameCollection.cs
- DefaultValueTypeConverter.cs
- ExtendedProperty.cs
- VersionedStreamOwner.cs
- SqlDataAdapter.cs
- NominalTypeEliminator.cs
- SuppressMergeCheckAttribute.cs
- ProcessModelInfo.cs
- DtrList.cs
- BoundsDrawingContextWalker.cs
- Vector.cs
- FieldAccessException.cs
- ReferencedAssembly.cs
- DnsEndpointIdentity.cs
- ExceptionUtil.cs
- OleDbParameterCollection.cs
- SrgsDocumentParser.cs
- ThaiBuddhistCalendar.cs
- RelationalExpressions.cs
- WorkflowViewManager.cs
- TemplateParser.cs
- AxisAngleRotation3D.cs
- HttpConfigurationContext.cs
- SizeConverter.cs
- Rotation3D.cs
- TextChange.cs
- WindowsFormsLinkLabel.cs
- SpeakProgressEventArgs.cs
- PropertyFilterAttribute.cs
- ItemMap.cs
- XmlValueConverter.cs
- SectionUpdates.cs
- ImageConverter.cs
- TimeoutException.cs
- Utils.cs
- MasterPageBuildProvider.cs
- UnsafeNativeMethods.cs
- AssociationSetMetadata.cs
- URIFormatException.cs
- HtmlInputReset.cs
- HostingEnvironmentSection.cs
- HwndMouseInputProvider.cs
- TypeNameConverter.cs
- _NTAuthentication.cs
- Char.cs
- FacetValues.cs
- ScopeElement.cs
- ContextStack.cs
- ByeOperationCD1AsyncResult.cs
- CompositeCollectionView.cs
- Emitter.cs
- WorkerRequest.cs
- Viewport3DVisual.cs
- WebSysDefaultValueAttribute.cs
- SettingsAttributes.cs
- util.cs
- DataGridViewCellStateChangedEventArgs.cs
- EdmFunctionAttribute.cs
- StringConcat.cs
- ToolTipService.cs
- SourceFileInfo.cs
- GatewayDefinition.cs