是否有人可以解釋爲什麼這代碼片段是不是工作?爲什麼不是一個castable到b? 我在考慮協變和逆變,但據我一致認爲這不適用於抽象類。類間的轉換與仿製藥
編譯錯誤: 無法將類型 'ConsoleApplication1.SVM' 到 'ConsoleApplication1.VMSBase' ConsoleApplication1 \ Program.cs的
class Program
{
static void Main(string[] args)
{
var a = new SVM();
var b = (VMSBase<Model>)a;
}
}
class SVM : VMSBase<SpecialModel>
{
}
class VMSBase<TS> : VMBase<TS> where TS : Model
{
}
class VMBase<T> where T : Model
{
}
class SpecialModel : Model
{
}
class Model
{
}
什麼是錯誤? –
雖然我不能確定,因爲這個話題變得混亂,我相信解決方案正在改變'VMSBase'到'VMSBase '。如果這不起作用,它將是'in'修飾符。 –
這是'out'修飾符上的[documentation](http://msdn.microsoft.com/zh-cn/library/dd469487.aspx)。 –