Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从用户定义的类创建列表_C# - Fatal编程技术网

C# 如何从用户定义的类创建列表

C# 如何从用户定义的类创建列表,c#,C#,大家好,我是Stackoverflow的新手,所以请忽略错误。我有不同的用户定义类,这些类有很多属性。我想创建一个使用这些类的列表,需要使用系统定义数据类型而不是用户定义类。。。 下面是您可以更好地理解的代码 这些是课程 public class Slide { public string Name { get; set; } public bool IsChecked { get; set; } } //......... public class SubSection {

大家好,我是Stackoverflow的新手,所以请忽略错误。我有不同的用户定义类,这些类有很多属性。我想创建一个使用这些类的列表,需要使用系统定义数据类型而不是用户定义类。。。 下面是您可以更好地理解的代码

这些是课程

public class Slide
{
    public string Name { get; set; }
    public bool IsChecked { get; set; }
}
//.........
public class SubSection
{
    public SubSection() 
    { 
        this.Composition = new ObservableCollection<object>();
    }
    public string Name { get; set; }
    public bool IsChecked { get; set; }
    public ObservableCollection<object> Composition { get; set; }

}
//................
public class Section
{
    public Section()
    {
        this.SubSections = new List<SubSection>();
    }
    public string Name { get; set; }
    public bool IsChecked { get; set; }
    public List<SubSection> SubSections { get; set; }
}
公开课幻灯片
{
公共字符串名称{get;set;}
已检查公共布尔值{get;set;}
}
//.........
公共类分部
{
公共部第()款
{ 
this.Composition=新的ObservableCollection();
}
公共字符串名称{get;set;}
已检查公共布尔值{get;set;}
公共可观测集合组合{get;set;}
}
//................
公共课组
{
公共事务组()
{
this.SubSections=新列表();
}
公共字符串名称{get;set;}
已检查公共布尔值{get;set;}
公共列表子节{get;set;}
}

列表中的每个节点都应该有节、子节和幻灯片,首先创建一个包含所有要包含的数据的模型类,然后可以创建该类的列表

public class CustomClass
{
   public Section{get;set;}
   public SubSection{get;set;}
   public Slide{get;set;}
}

var customClasses = new List<CustomClass>();
公共类CustomClass
{
公共部分{get;set;}
公共子节{get;set;}
公共幻灯片{get;set;}
}
var customClasses=新列表();

我假设您需要一个列表,列表中的每个元素都包含您在问题中列出的每个类中的一个。您可以使用以下列表:

var mylist=new List();
添加(Tuple.Create(new Section(),new SubSection(),new Slide());
添加(Tuple.Create(new Section(),new SubSection(),new Slide());
添加(Tuple.Create(new Section(),new SubSection(),new Slide());

Tuples在.NET 4.5中被引入,只要你至少4.5,这对你来说是有效的。

< P>我同意Josh Smeaton对元组的回答,但是为了好玩,我想知道你是否可以把Anonymous Types看作一个系统定义的类型……?
var myList = new[]
{
    new { Section = new Section(), SubSection = new SubSection(), Slide = new Slide()}, 
    new { Section = new Section(), SubSection = new SubSection(), Slide = new Slide()}
}.ToList();

“需要使用系统定义数据类型而不是用户定义类”…不确定你的意思。什么是用户定义的类,什么是系统数据类型?这个代码示例并不清楚你想做什么,也许你可以提供更多的信息?还有,你使用的是哪个版本的.NET/C?元组实际上有利于具体的类吗?我以前使用过它们类似的东西,但它不是最可读/可维护的代码。@Arkiliknam我通常会创建自己的类,除非它是内部的。不过OP提到了系统定义的类型,所以我选择了标准库中的一些类型,猜想OP就是这个意思。啊,我错过了。好主意:)@Jwosty我在python中也经常使用元组,很适合任意不可变的集合。@Arkiliknam如果C#有一个很好的元组语法,它可能会被使用morehah,我在我的答案中添加了匿名类型作为第二个选项,但删除了它们。只在局部范围内有用,但显示它们仍然是一个好主意。
var myList = new[]
{
    new { Section = new Section(), SubSection = new SubSection(), Slide = new Slide()}, 
    new { Section = new Section(), SubSection = new SubSection(), Slide = new Slide()}
}.ToList();