v10.10.2024.0701 使用IJsonHost改进Json序列化
大石头 编写于 2024-07-01 08:36:34 大石头 提交于 2024-07-01 08:48:33
X
using System.Globalization;
using System.Runtime.InteropServices;

namespace System.Collections;

[Serializable]
[ComVisible(true)]
public sealed class Comparer : IComparer
{
	public static readonly Comparer Default = new Comparer();

	public static readonly Comparer DefaultInvariant = new Comparer(CultureInfo.InvariantCulture);

	private CompareInfo m_compareInfo;

	private Comparer()
	{
	}

	public Comparer(CultureInfo culture)
	{
		if (culture == null)
		{
			throw new ArgumentNullException("culture");
		}
		m_compareInfo = culture.CompareInfo;
	}

	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 text = a as string;
			string text2 = b as string;
			if (text != null && text2 != null)
			{
				return m_compareInfo.Compare(text, text2);
			}
		}
		if (a is IComparable)
		{
			return (a as IComparable).CompareTo(b);
		}
		if (b is IComparable)
		{
			return -(b as IComparable).CompareTo(a);
		}
		throw new ArgumentException("Neither 'a' nor 'b' implements IComparable.");
	}
}