下面的代码给我一个错误,说我的调用中有无效的参数 doStuffToLines(segments)
我不应该这样做,因为我有DimensionLineSegment来自Lines的继承吗?
private void doStuff()
{
List<DimensionLineSegment> segments = new List<DimensionLineSegment>();
doStuffToLines(segments);
}
private void doStuffToLines(List<Line> lines)
{
}
Run Code Online (Sandbox Code Playgroud)
您无法将具体类型传递给该方法,因为 List 不是协变的。
你可以尝试这样的事情:
public void doStuffToLines<T>(IList<T> lines) where T : Line
{
//do some thing
}
Run Code Online (Sandbox Code Playgroud)
通过指定泛型约束,您可以限制传递给 Line 类型对象或其派生后代的泛型类型。
需要注意的一件事是,如果您使用 .NET 4.0,则可能会将您的方法从接受 List 更改为 IEnumerable,因为 T 泛型参数是协变的。