Почему преобразование из «class A: IX» в общий «T, где T: IX» не разрешено?

Почему следующее вызывает ошибку компиляции?

interface IX {}
interface IY {}
class XY : IX, IY {}

void Foo<T>() where T : IX, IY
{
    T xy = new XY();
    …   // ^^^^^^^^
}       // error: "Implicit conversion of type 'XY' to 'T' is not possible."

Примечание: Та же ошибка возникнет, если class XY: IX и где T: IX . Однако я выбрал более сложный пример, поскольку более простой мог вызвать обходные ответы, например, «Просто измените тип xy с T на IX ", что не отвечает , почему это преобразование не выполняется.

6
задан stakx supports GoFundMonica 24 February 2012 в 19:46
поделиться