comparison Implab/CustomEqualityComparer.cs @ 55:c0bf853aa04f

Added initial JSON support +JSONParser +JSONWriter
author cin
date Sun, 15 Jun 2014 19:39:11 +0400
parents
children
comparison
equal deleted inserted replaced
51:2c332a9c64c0 55:c0bf853aa04f
1 using Implab;
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Text;
6 using System.Threading.Tasks;
7
8 namespace Implab {
9 /// <summary>
10 /// Обертка для создания <c>IEqualityComparer</c> с использованием делегатов или лямда-выражений.
11 /// </summary>
12 /// <typeparam name="T">Тип сравниваемых значений</typeparam>
13 public class CustomEqualityComparer<T> : IEqualityComparer<T> {
14 Func<T, T, bool> m_equals;
15 Func<T, int> m_hash;
16
17 /// <summary>
18 /// Создает новый объект с указанными функциями сравнения на раветво и получения хеш-кода.
19 /// </summary>
20 /// <param name="equality">Функция проверки на равенство</param>
21 /// <param name="hash">Функция получения хешкода</param>
22 public CustomEqualityComparer(Func<T, T, bool> equality, Func<T, int> hash) {
23 Safe.ArgumentNotNull(equality, "equality");
24 Safe.ArgumentNotNull(hash, "hash");
25 m_hash = hash;
26 m_equals = equality;
27 }
28
29 /// <summary>
30 /// Сравнивает два знаечния на ревенство.
31 /// </summary>
32 /// <param name="x"></param>
33 /// <param name="y"></param>
34 /// <returns>Результат сравнения на равенство</returns>
35 public bool Equals(T x, T y) {
36 return m_equals(x,y);
37 }
38
39 /// <summary>
40 /// Получает хеш-код для указанного значения.
41 /// </summary>
42 /// <param name="obj"></param>
43 /// <remarks>Равные знаечния *должны* иметь одинаковый хеш-код.</remarks>
44 /// <returns>Хеш-код</returns>
45 public int GetHashCode(T obj) {
46 return m_hash(obj);
47 }
48 }
49 }