Re: Без слов
От: vdimas Россия  
Дата: 10.01.17 17:23
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>
using System;
Q>using System.Collections.Generic;

Q>internal class GenericEqualityComparer<T> : EqualityComparer<T> where T : IEquatable<T>
Q>{
Q>    public override bool Equals(T x, T y)
Q>    {
Q>        if (x != null)
Q>        {
Q>            if (y != null) return x.Equals(y);
Q>            return false;
Q>        }
Q>        if (y != null) return false;
Q>        return true;
Q>    }

Q>    public override int GetHashCode(T obj) => obj?.GetHashCode() ?? 0;

Q>    // ...
Q>}


Ну и чего ж этой реализации не хватило на все случаи?

Что не так-то?
Что именно не удалось выразить через "параметрический полиморфизм"?


V>>Тут нечего далее обсуждать. Усё, припыли.


[Картинка скипнута]

template<typename T>
bool is_equal(const T * x, const T * y) {
  if(x)
    return y ? *x == *y : false;  

  return !y;
}

template<typename T>
bool is_equal(const T & x, const T & y) {
  return x == y;  
}


Вот и всех делов на все случаи жизни.

Дарю.
Отредактировано 10.01.2017 17:39 vdimas . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.