【发布时间】:2014-12-12 22:24:18
【问题描述】:
对不起,如果问题是多余的,但我找不到适合我的特殊情况的解决方案。 请考虑这段代码:
public interface IPoint {}
public class GazePoint : IPoint {}
public Point AvgPoint(IEnumerable<IPoint> locations) {}
List<GazePoint> gazePoints = new List<GazePoint>();
//...
// this doesn't work:
Point avg = AvgPoint(gazePoints);
您能否解释一下为什么它不起作用(我假设 C# 4.0 已经解决了这个问题)以及如何更改 AvgPoint() 方法的签名以使接收 IPoint 的不同实现成为可能。 (我不想将gazePoints集合转换为另一种类型的集合,因为它处于一个大循环中,并且我担心性能。
[更新]:我将 GazePoint 定义为结构,这就是问题的根源。不过,我不知道为什么 struct 在这里不起作用。
【问题讨论】:
-
您的
AvgPoint方法没有返回语句。请发布演示实际问题的示例代码... -
你能定义
doesn't work吗?异常还是错误? -
你的方法签名对我来说很好。你是如何实现其余部分的?
-
谢谢大家,请在@Rufus的回答下找到我的解释。
标签: c# collections covariance