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

C#类图作业:Track构造函数Section类型转换CS1503错误求助

C#类图作业:Track构造函数类型不匹配问题解决

你的思路完全正确——必须把SectionTypes枚举值转换为Section类实例才能存入LinkedList<Section>,CS1503错误就是因为直接把枚举值塞进了需要对象实例的集合,类型不匹配导致的。你的Section类代码没有问题,只需要在Track的构造函数里完成枚举到实例的转换。

修正后的Track类代码

namespace Model
{
    internal class Track
    {
        public string Name { get; set; }
        public LinkedList<Section> Sections { get; set; }

        public Track(string name, SectionTypes[] sections)
        {
            Name = name;
            // 先初始化链表,避免空引用
            Sections = new LinkedList<Section>();
            // 遍历枚举数组,逐个创建Section实例并加入链表
            foreach (var sectionType in sections)
            {
                Sections.AddLast(new Section { SectionType = sectionType });
            }
        }
    }
}

更简洁的LINQ写法(需引用System.Linq)

如果想让代码更紧凑,可以用LINQ快速转换数组:

using System.Linq;

namespace Model
{
    internal class Track
    {
        public string Name { get; set; }
        public LinkedList<Section> Sections { get; set; }

        public Track(string name, SectionTypes[] sections)
        {
            Name = name;
            Sections = new LinkedList<Section>(sections.Select(st => new Section { SectionType = st }));
        }
    }
}

关键说明

  • 必须为每个SectionTypes枚举值创建对应的Section实例,因为LinkedList<Section>存储的是对象,不是枚举值
  • 初始化Sections链表很重要,否则后续操作链表时会触发空引用异常

内容的提问来源于stack exchange,提问作者Daan T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:05:23