【发布时间】:2013-01-10 17:39:38
【问题描述】:
这是我的原帖: C# generic inheritance and covariance
仅在我的只读接口上,我希望继承工作。
public delegate Boolean EnumerateItemsDelegate<out ItemType>(ItemType item);
public interface IReadOnlyCollection<out ItemType>
{
Boolean ContainsItem(ItemType item);
Array CopyToArray();
void EnumerateItems(EnumerateItemsDelegate<ItemType> enumerateDelegate);
UInt32 Count { get; }
UInt32 Capacity { get; }
}
像这样,除了它编译的地方:-p
这就是我想要的工作:
IReadOnlyCollection<String> s;
IReadOnlyCollection<Object> o = s;
【问题讨论】:
-
顺便说一句,
ItemType应该被称为T。 -
与其让
CopyToArray返回Array,不如让它返回ItemType[],这样它就被强类型化了。 -
这个问题似乎没有任何问题。 “我希望继承起作用”不是问题。如果您想要答案,请将其重写为问题。编译器是正确的;此代码不是类型安全的。
-
服务会很好,但是接口上的继承不起作用。能够做到这一点也很好。我编辑了这个问题,以便更清楚我想要做什么。
-
@RyanBrown:这个问题被否决了,因为它是一个问得不好的问题。非常不清楚您要问什么,因为其中没有实际问题,几乎没有证据表明您进行过任何研究,并且您接受的回答率极低。如果你真的想让每个人的事情都变得更好,那就做你的研究,提出明确的问题,并接受好的答案。