0

感谢您所有真正帮助我的消息,我终于决定在这里发帖。我刚刚发现了允许我用其他元素创建列表列表的元组。这是我的简化代码:

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 个字符串。“项目”是一个列表和一个字符串(项目名称),因此我为此使用了元组。第一个问题:我会为“项目”创建一个类,但我找不到如何将元组作为类的参数?(他不承认“var”类型作为参数)
然后,第二个问题:我有一个问题:当程序运行时,在“项目”(这是“项目”的列表)内,“项目名称”是写得很好,但“类别”数据每次都被列表中每个索引的新数据替换。我不知道这样的事情怎么可能......

非常感谢您,希望您能理解我的问题,我很抱歉我的英语不是我的母语。如果无法理解,我将重新制定。

4

2 回答 2

1

您似乎不希望将元组作为项目类中的属性,看起来您想要的是:

public class Project
{
    public string project_name {get; set;}
    public List<Category> categories {get; set;}
}

正如 Corak 提到的,我认为字典可能有助于解决您的其他问题。

顺便说一句,您不能将var其用作属性类型的原因是它不是类型——它只是在不显式指定变量类型的情况下声明变量的一种简写方式(编译器会计算出来) ),但它仅适用于局部变量。您不能将它用于属性,因为编译器无法确定该属性的类型应该是什么。元组的类型是Tuple<T1, T2,...>——例如,您的元组是Tuple<string, List<Category>>,如果您愿意,您当然可以拥有该类型的类属性。

于 2013-04-30T13:49:46.007 回答
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);
    }
}

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

于 2013-04-30T13:49:44.993 回答