列表的C#元组替换/擦除以前的数据

时间:2013-04-30 13:40:23

标签: c# list tuples

感谢所有真正帮助我的消息,我最终决定在这里发帖。我刚刚发现了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”写得很好,但“类别”数据每次都被替换为列表的每个索引都有一个新的。我不知道这样的事情怎么可能......

非常感谢,我希望你能理解我的问题,我对我的英语非常抱歉,但这不是我的母语。如果不可理解,我会重新制定。

2 个答案:

答案 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);
    }
}

通过在每个循环上创建一个元组,您将覆盖以前的工作。使用字典,您只需在循环内添加到您的集合