Re[28]: Собакоед-глумитель
От: vdimas Россия  
Дата: 10.01.17 11:42
Оценка:
Здравствуйте, Qbit86, Вы писали:

V>>Угу, у которого создание экземпляров происходит через рефлексию.

V>>Офигенный пример обсуждаемого "параметрического полиморфизма".
Q>Как он там создаётся вообще пофигу. Пример был про то, как вызывается метод констрейнта у экземпляра типа

Никак он не вызывается.
x.Equals(y) — это метод базового Object

bool ByteEqualityComparer::Equals(byte x, byte y) {
    return x == y;
}

Тоже никак ничего не вызывается.

Кароч, пример был неудачный, хотя удачные примеры, таки, есть.
Но их малочисленность лишь подтверждает моё исходное утверждение:

Собсно, вообще таких алгоритмов мало, которые можно выразить в дотнете для value и ref-типов в генериках и они будут корректно работать в обоих случаях.



Q>Тебя почему-то 'ят обычные вызовы методов у типов, по которым параметризуются обобщённый код


Ну так я уже показал "цену" этому параметрическому полиморфизму и твоим "констрейнам" здесь:
template<typename T>
void Foo(T * t) 
{
    IQuxable * q = t;
    IBarable * b = t;
    q->Qux();
    b->Bar(); 
}


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

Даже если у тебя будет констрейн where T : IBarable<T> — я уверен, ты сам сможешь доработать мой сниппет до такого сценария.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.