Здравствуйте,
почему в C# получается ошибка при компиляции?
class Base<T> { }
class BaseT { }
class InBaseT : BaseT { }
class A : Base<InBaseT> { }
class Program
{
static void Main(string[] args)
{
var a = new A();
var x1 = (Base<InBaseT>)a;
var x2 = (Base<BaseT>)a; // error
}
}
Здравствуйте, _ichensky, Вы писали:
_>Здравствуйте,
_>почему в C# получается ошибка при компиляции?
Ковариантность не работает с классами, только с интерфейсами.
interface Base<out T> { } // <--
class BaseT { }
class InBaseT: BaseT { }
class A: Base<InBaseT> { }
class Program3
{
static void Main(string[] args)
{
var a = new A();
var x1 = (Base<InBaseT>)a;
var x2 = (Base<BaseT>)a; // error
}
}