【发布时间】:2011-11-23 17:57:47
【问题描述】:
很抱歉,如果以前有人问过这个问题,但谷歌几乎不可能。我认为一个 int 数组实现了 IEnumerable,因此 Thing 应该能够实现 IThing。怎么没有?
public interface IThing
{
IEnumerable<int> Collection { get; }
}
public class Thing : IThing
{
public int[] Collection { get; set; }
}
注意
public class Thing : IThing
{
public int[] Array { get; set; }
public IEnumerable<int> Collection
{
get
{
return this.Array;
}
}
}
没问题。
【问题讨论】:
-
int[]与IEnumerable<int>的类型不同,即使它实现了IEnumerable<int> -
C# 不支持覆盖或接口的返回类型协方差。
-
您是否只是想了解为什么不允许这样做(原因是 SLaks 的评论),或者您的目标只是在离开界面时在类上提供具体类型(
int[])定义IEnumerable<T>?
标签: c# arrays interface ienumerable implementation