【发布时间】:2013-05-07 10:41:23
【问题描述】:
class BaseItem { }
class DerivedItem : BaseItem { }
interface IInterface<T> where T is BaseItem { }
class RealizedInterface<T> : IInterface<T> { }
RealizedInterface<BaseItem> rb;
RealizedInterface<DerivedItem> rd = new RealizedInterface<DerivedItem>;
有没有下一行所示的投射方式:
rb = rd;
谁能告诉我如何将rd 转换为rb?
其实BaseItem本身也是一个泛化类但是为了简单的问题,没有写。 class BaseItem<U,K> / DerivedItem<U,K>
对于那些能够理解我面临的真正问题的人来说是这样的。
IShape<IBaseShape<long>, long> shape;
这是一个声明的对象
IShape<ITriangle<long>, long> triangle =new Shape<ITriangle<long>,long>(); //Shape derived from IShape
shape = triangle; //here is the problem.
其中 ITriangle 派生自 IBaseShape。非常感谢任何帮助。
结果:我决定不实施 out 关键字。就我而言,它并没有带来太多价值(这是一个持续数月的项目,到处都是仿制药)。具体来说,如果您考虑在具有 in 关键字的接口中实现 setter 并使用 out 关键字实现 getter,再加上在装饰有 out 关键字的接口中使用泛型所产生的转换问题让我想到关于它两次。总而言之,如果您从头开始使用它们可能会很有用,否则可能会带来比您想象的更多的问题。
【问题讨论】:
-
语言将是一个有用的附加标签。此外,如果您想发布代码示例,通常最好突出显示代码并点击
{}按钮。