【问题标题】:What is best way to include List<> as parameter in class?将 List<> 作为参数包含在类中的最佳方法是什么?
【发布时间】:2015-11-12 13:10:41
【问题描述】:

我有 2 个类,我想给它添加一个列表。我将使用复选框来填写我的清单。但是现在我应该如何创建列表?

public class DocPart
        {
            public string Title { get; set; }
            public string TexLine { get; set; }
        }
    ​
        public class DocConfig
        {
            public string Description { get; set; }
            public List<DocPart> Parts { get; set; }
    ​
            public static DocConfig LoadFromString(string jsonData)
            {
                var serializer = new DataContractJsonSerializer(typeof(DocConfig));
    ​
                var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonData));
                var config = (DocConfig)serializer.ReadObject(ms);
    ​
                return config;
            }
    ​
            public string SaveToString()
            {
                var serializer = new DataContractJsonSerializer(typeof(DocConfig));
                var ms = new MemoryStream();
                serializer.WriteObject(ms, this);
                return Encoding.UTF8.GetString(ms.ToArray());
            }
        }

例如,我想在开始时为 2 个项目创建列表。我正在考虑这段代码:

 var doc = new DocConfig();
doc.Description = "bla bla";
doc.Parts = new List<DocPart>();
doc.Parts.Add(new DocPart { Title = "aaa", TexLine = @"\include{aaa.tex}"});
doc.Parts.Add(new DocPart { Title = "bbb", TexLine = @"\include{bbb.tex}" });

我该怎么做?

编辑:

另外如何在控制台应用程序中显示列表记录?

编辑: 也许我在代码中犯了错误:

public class DocConfig
    {
        public string Description { get; set; }
        public List<DocPart> Parts { get; set; }
        DocConfig()
        {
            var doc = new DocConfig();
            doc.Description = "bla bla";
            doc.Parts.Add(new DocPart { Title = "aaa", TexLine = @"\include{aaa.tex}" });
            doc.Parts.Add(new DocPart { Title = "bbb", TexLine = @"\include{bbb.tex}" });
            this.Parts = new List<DocPart>()
                foreach (Part part in doc.Parts)
                       {
                Console.WriteLine(part.Title);
                     }
        }  

【问题讨论】:

  • 只需添加Parts = new List&lt;DocPart&gt;() in costrutor 就可以了
  • 我应该把它放在哪里?

标签: c# list arraylist configuration


【解决方案1】:

将此添加到您的 DocConfig 类中:

          DocConfig()
          {
               this.Parts= new List<DocPart>();
          }  

并删除

doc.Parts = new List&lt;DocPart&gt;();

还阅读了有关 constructors 的信息,您的其余部分都很好。

编辑:

要在控制台中检查您的列表,您可以使用 foreach 循环,这是与 List 一起使用的最佳选择:

foreach (var part in doc.Parts)
        {
            Console.WriteLine(part.Title);
        }

【讨论】:

  • 你能告诉我如何在控制台中查看我的列表吗?
  • @Mantas 我已经在 answere 中添加了一些解释,顺便说一句,如果我的 answere 适合您,请记住接受它,所有其他问题都可以在这里和您的问题中添加,以免产生垃圾邮件跨度>
  • 好吧,我最后一个问题。控制台出现并立即熄灭。也许我在代码部分犯了错误
  • 在末尾添加Console.ReadLine();
  • 我认为主要问题是,在 foreach 循环中,在 line (Part part in doc.Parts) 中,程序说 Part 是类型或命名空间,找不到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 2023-04-11
相关资源
最近更新 更多