【问题标题】:Adding List<T> into a List<T> C#将 List<T> 添加到 List<T> C#
【发布时间】:2018-09-04 19:32:18
【问题描述】:

我有一个结构:

public class FolderDirectoryStructure
{
    public string ChildFolder {get; set;}
    public FileExtension Extension {get; set;}
}

还有另一个结构:

public class FileExtension
{
    public string Extension {get; set;}
    public int ExtensionCount {get; set;}
}

我现在要做的是将现有的 FileExtension 添加到我的 FolderDirectoryStructure。所以像:

private List<FolderDirectoryStructure> FolderDS = new List<FolderDirectoryStructure>();

private List<FileExtension> extensions = new List<FileExtension>();

extensions.Add(new FileExtension() {Extension = ".jpg", ExtensionCount = 1});

FolderDS.Add(new FolderDirectoryStructure() {ChildFolder =
@"C:\users\blah\desktop\somefolder", Extension = extensions});

这不起作用,因为我收到错误:

无法将类型“System.Collections.Generic.List”隐式转换为“DirectoryStructure.Extensions”

我也试过了:

FolderDS.Add(new FolderDirectoryStructure() { ChildFolder =
@"C:\users\blah\desktop\somefolder", Extension = new Extensions()
{extensions.Extension, extensions.ExtensionCount} });

我也在考虑添加范围,因为我正在尝试添加一系列扩展,但这似乎并不需要。我似乎没有办法了。

所以希望有人能帮助我解决这个问题,我当然会很感激。

【问题讨论】:

  • FolderDirectoryStructure 中的属性Extension 应该是List&lt;FileExtension&gt;
  • 我没有看到 DirectoryStructure.Extensions 类型,因此您的错误消息与您发布的代码不匹配。
  • 对不起@DStanley 我试图简化它并且对变量有一点影响。不过,unlucky 能够清除它并为我弄清楚。

标签: c# list


【解决方案1】:

当前FolderDirectoryStructureExtension 属性是FileExtension 类型,您正尝试将FileExtension 列表分配给导致错误的该属性。所以最好将属性更改为列表。那么如果你像这样更改类的定义,你的代码就可以正常工作:

public class FolderDirectoryStructure
{
    public string ChildFolder {get; set;}
    public List<FileExtension> Extension {get; set;}
}

【讨论】:

    【解决方案2】:
    public class FolderDirectoryStructure
    {
        public string ChildFolder {get; set;}
        public FileExtension Extension {get; set;}
    }
    

    将扩展声明为FileExtension。您尝试在此处分配List&lt;FileExtension&gt;

    FolderDS.Add(new FolderDirectoryStructure() {ChildFolder =
    @"C:\users\blah\desktop\somefolder", Extension = extensions});
    

    显然这行不通。修正差异,错误就会消失。

    【讨论】:

      【解决方案3】:

      你有

      public FileExtension Extension {get; set;}
      

      但您正在尝试设置变量

      extensions 
      

      这是一个

      List<Extension>
      

      【讨论】:

        【解决方案4】:

        在 FolderDirectoryStructure Extension 中是单个项目,您不能将 List 分配给 FileExtension 属性,错误是准确地说明出了什么问题。这会工作

        public class FolderDirectoryStructure
        {
            public string ChildFolder {get; set;}
            public List<FileExtension> Extension {get; set;}//change this
        }
        

        【讨论】:

          【解决方案5】:

          您的课程有 1 个扩展对象,但您尝试使用它们的列表进行设置,您应该像这样重新设计您的课程:

          public class FolderDirectoryStructure
          {
              public string ChildFolder {get; set;}
              public List<FileExtension> Extension {get; set;}
          }
          

          【讨论】:

            猜你喜欢
            • 2014-04-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-05-20
            相关资源
            最近更新 更多