感谢所有真正帮助我的消息,我最终决定在这里发帖。我刚刚发现了Tuples,它允许我用其他元素创建List列表。 这是我的简化代码:
public class Category { //Classe "Category" comprenant le nom de la category et sa proportion de CIR
public string category_name {get; set;}
public string proportion {get; set;}
}
public static void Main(string[] args)
{
var Projects = new List<Tuple<string, List<Category>>>();
while(...)
{ [...]
var List_Categories = new List<Category>()
while(...)
{ [...]
List_Categories.Add(category_example);
}
Projects.Add(Tuple.Create(nom_projet, List_Categories);
}
}
我的“类别”类只有2个字符串。 “project”是一个List和一个字符串(project_name),因此我使用了Tuple。
第一个问题:我会为“项目”创建一个类,但我找不到如何将一个元组作为一个类的参数? (他不承认“var”类型作为参数)
然后,第二个问题:我有一个问题:当程序进行时,在“项目”(这是“项目”列表)中,“project_name”写得很好,但“类别”数据每次都被替换为列表的每个索引都有一个新的。我不知道这样的事情怎么可能......
非常感谢,我希望你能理解我的问题,我对我的英语非常抱歉,但这不是我的母语。如果不可理解,我会重新制定。
答案 0 :(得分:1)
您似乎不希望元组作为项目类中的属性,看起来您想要的是:
public class Project
{
public string project_name {get; set;}
public List<Category> categories {get; set;}
}
正如科拉克所说,我认为一本词典可能有助于你的另一个问题。
顺便说一句,你不能使用var
作为属性类型的原因是它不是一个类型 - 它只是一种声明变量而不明确指定类型的简写方式该变量(编译器将其计算出来),但它only works on local variables。您不能将它用于属性,因为编译器无法确定该属性的类型应该是什么。 tuple的类型为Tuple<T1, T2,...>
- 例如,此处的元组为Tuple<string, List<Category>>
,如果您愿意,您当然可以拥有该类型的类属性。
答案 1 :(得分:0)
尝试使用字典
public static void Main(string[] args)
{
var Projects = new Dictionary<string, List<Category>>();
while(...)
{ [...]
var List_Categories = new List<Category>()
while(...)
{ [...]
List_Categories.Add(category_example);
}
Projects.Add(nom_projet, List_Categories);
}
}
通过在每个循环上创建一个元组,您将覆盖以前的工作。使用字典,您只需在循环内添加到您的集合