누군가이 코드 스 니펫이 작동하지 않는 이유를 설명해 주실 수 있습니까? 왜 b에 캐스팅 할 수 없습니까? 나는 공분산과 반항에 대해 생각하고 있었지만, 내가 합의한 한 추상적 인 수업에는 적용 할 수 없다.제네릭을 사용하여 클래스 사이에 캐스팅
컴파일 오류 : 는 '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/en-us/library/dd469487.aspx)입니다. –