Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / clr / src / BCL / System / Collections / Comparer.cs / 1 / 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;
[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");
}
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"));
}
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]
public void GetObjectData(SerializationInfo info, StreamingContext context) {
if (info==null) {
throw new ArgumentNullException("info");
}
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;
[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");
}
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"));
}
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]
public void GetObjectData(SerializationInfo info, StreamingContext context) {
if (info==null) {
throw new ArgumentNullException("info");
}
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
- ObjectReaderCompiler.cs
- Parser.cs
- SerializationInfoEnumerator.cs
- WebBrowserNavigatedEventHandler.cs
- TemplateBamlTreeBuilder.cs
- ViewPort3D.cs
- UrlAuthorizationModule.cs
- TraceUtils.cs
- RijndaelManagedTransform.cs
- PerspectiveCamera.cs
- Brush.cs
- UIPropertyMetadata.cs
- DbMetaDataColumnNames.cs
- Msec.cs
- TextBoxBase.cs
- TemplateControl.cs
- PrimitiveType.cs
- EntityExpressionVisitor.cs
- MarginsConverter.cs
- InputScope.cs
- ResolveNameEventArgs.cs
- XMLSyntaxException.cs
- MenuAdapter.cs
- PaginationProgressEventArgs.cs
- MultiTrigger.cs
- CompressStream.cs
- EntityStoreSchemaFilterEntry.cs
- Funcletizer.cs
- SubMenuStyleCollection.cs
- KeyConstraint.cs
- JavaScriptString.cs
- ClonableStack.cs
- XmlnsPrefixAttribute.cs
- EncryptedXml.cs
- PropertyEmitter.cs
- RegexInterpreter.cs
- PropertyEmitter.cs
- DbCommandTree.cs
- CommandLineParser.cs
- StatusBarItemAutomationPeer.cs
- Query.cs
- ColumnProvider.cs
- XmlHierarchicalEnumerable.cs
- ButtonBaseAdapter.cs
- WmpBitmapEncoder.cs
- _HelperAsyncResults.cs
- HandlerBase.cs
- XmlReaderSettings.cs
- WebPartExportVerb.cs
- XmlSchemaGroup.cs
- NamedElement.cs
- FocusWithinProperty.cs
- PhonemeConverter.cs
- TemplatedControlDesigner.cs
- InfocardChannelParameter.cs
- WebPartMenuStyle.cs
- CompiledQuery.cs
- ZipIOCentralDirectoryFileHeader.cs
- GroupBox.cs
- ServiceInstallComponent.cs
- SqlNodeTypeOperators.cs
- EventManager.cs
- SQLStringStorage.cs
- MenuStrip.cs
- ScaleTransform.cs
- FontUnit.cs
- baseshape.cs
- StrongNameHelpers.cs
- ServiceErrorHandler.cs
- _Connection.cs
- OLEDB_Enum.cs
- DesignerVerbToolStripMenuItem.cs
- AutoResetEvent.cs
- OLEDB_Util.cs
- LinqDataSourceStatusEventArgs.cs
- RankException.cs
- ToolStrip.cs
- ArgumentsParser.cs
- UpdateExpressionVisitor.cs
- UnsafeNetInfoNativeMethods.cs
- LocalizableAttribute.cs
- DynamicResourceExtension.cs
- ContainerParagraph.cs
- TabControlEvent.cs
- CommunicationObjectAbortedException.cs
- _AcceptOverlappedAsyncResult.cs
- WmlImageAdapter.cs
- PenLineCapValidation.cs
- SamlAttributeStatement.cs
- MessageQueueInstaller.cs
- ListBindingHelper.cs
- FileLoadException.cs
- NetworkStream.cs
- ZoneLinkButton.cs
- Assembly.cs
- XslTransformFileEditor.cs
- ByteStream.cs
- ServiceThrottlingBehavior.cs
- RelationshipConverter.cs
- DelayLoadType.cs