You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#定义嵌套列表时遇类型转换错误,求代码修正方案

解决嵌套坐标列表的代码错误

错误核心原因

你遇到的编译错误是类型不匹配导致的:

  • positionGroups 是 List<Positions> 类型,其中 Positions 是继承自 List<XYPos> 的自定义类
  • 你试图用 List<XYPos> 作为参数构造 List<Positions>,但 List<XYPos> 和 IEnumerable<Positions> 之间没有合法的转换关系,编译器无法识别这种类型转换。

修正方案1:沿用自定义 Positions 类

既然已经定义了 Positions 作为 List<XYPos> 的子类,直接创建 Positions 实例存储坐标,再添加到 positionGroups 即可:

// == 类定义
public class XYPos
{
  public int x { get; set; }
  public int y { get; set; }
}

public class Positions : List<XYPos>{}
// == 修正后的数据定义代码
var positionGroups = new List<Positions>();

// 第一组坐标
var positions = new Positions();
positions.Add(new XYPos { x = 50, y = 25});
positionGroups.Add(positions);

// 第二组坐标
var positions2 = new Positions();
positions2.Add(new XYPos { x = 33, y = 50});
positions2.Add(new XYPos { x = 66, y = 50});
positionGroups.Add(positions2);

修正方案2:移除自定义类,直接用嵌套泛型列表

如果不需要扩展 List<XYPos> 的额外功能,直接使用 List<List<XYPos>> 会更简洁,避免不必要的子类定义:

// == 仅保留坐标类
public class XYPos
{
  public int x { get; set; }
  public int y { get; set; }
}
// == 数据定义代码
var positionGroups = new List<List<XYPos>>();

// 第一组坐标
var positions = new List<XYPos>();
positions.Add(new XYPos { x = 50, y = 25});
positionGroups.Add(positions);

// 第二组坐标
var positions2 = new List<XYPos>();
positions2.Add(new XYPos { x = 33, y = 50});
positions2.Add(new XYPos { x = 66, y = 50});
positionGroups.Add(positions2);

内容的提问来源于stack exchange,提问作者David Rouse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:15:39