我遇到了继承和泛型的问题。这是说明我的问题的代码:
namespace TestApplication
{
public class MyClass<T>
{
private T field;
public MyClass(T field)
{
this.field = field;
}
}
public class MyIntClass : MyClass<int>
{
public MyIntClass(int field)
: base(field)
{
}
}
}
当我尝试做这样的事情时:
MyClass<int> sth = new MyClass<int>(10);
MyIntClass intsth = (MyIntClass) sth;
我收到强制转换异常:无效的强制转换异常。无法将“TestApplication.MyClass`1[System.Int32]”转换为“TestApplication.MyIntClass”。
更重要的是,我无法创建强制转换运算符:
public static implicit operator MyIntClass(MyClass<int> myClass)
因为:'TestApplication.MyIntClass.implicit operator TestApplication.MyIntClass(TestApplication.MyClass)':不允许用户定义的与基类之间的转换
我需要如上所述创建演员表。我不知道为什么我不能从基类类型转换。我怎么解决这个问题?提前致谢。
编辑
感谢您的回答。现在我看到我无法从基类转换为派生类,并且我看到它与泛型没有任何关系。但是为什么我不能从基类创建用户定义的转换?我有一个返回基类的方法。我能够定义一种转换方法,但创建一个强制转换运算符恕我直言将是一个更好的解决方案。