#region Copyright 2012-2014 by Roger Knapp, Licensed under the Apache License, Version 2.0 /* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #endregion using System.Collections.Generic; namespace CSharpTest.Net.Collections { /// /// Represents a key-value comparison /// public class KeyValueComparer : IComparer> { private readonly IComparer _keyComparer; private static KeyValueComparer _defaultInstance; /// /// Represents a key-value comparison using the default comparer for type TKey /// public static KeyValueComparer Default { get { return _defaultInstance ?? (_defaultInstance = new KeyValueComparer(Comparer.Default)); } } /// /// Returns the comparer being used by this instance /// public IComparer Comparer { get { return _keyComparer; } } /// /// Creates a key-value comparison using the default comparer for type TKey /// public KeyValueComparer() : this(Comparer.Default) { } /// /// Creates a key-value comparison with the specified comparer /// public KeyValueComparer(IComparer keyComparer) { _keyComparer = Check.NotNull(keyComparer); } /// /// Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. /// public int Compare(KeyValuePair x, KeyValuePair y) { return _keyComparer.Compare(x.Key, y.Key); } } }