将 List<> 作为参数包含在 class 中的最佳方法是什么?
What is best way to include List<> as parameter in class?
我有 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);
}
}
将此添加到您的 DocConfig class:
DocConfig()
{
this.Parts= new List<DocPart>();
}
并删除
doc.Parts = new List<DocPart>();
还阅读了有关 constructors 的内容,您的其余部分都很好。
EDIT:
要在控制台中检查您的列表,您可以使用 foreach 循环,这是与列表一起使用的最佳选择:
foreach (var part in doc.Parts)
{
Console.WriteLine(part.Title);
}
我有 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);
}
}
将此添加到您的 DocConfig class:
DocConfig()
{
this.Parts= new List<DocPart>();
}
并删除
doc.Parts = new List<DocPart>();
还阅读了有关 constructors 的内容,您的其余部分都很好。
EDIT:
要在控制台中检查您的列表,您可以使用 foreach 循环,这是与列表一起使用的最佳选择:
foreach (var part in doc.Parts)
{
Console.WriteLine(part.Title);
}