构建对象列表的不同方法

时间:2013-11-26 16:00:03

标签: c# .net c#-4.0

我有一个名为Fruit的课程如下:

public class Fruit
{
    public int FruitId { get; set; }
    public string Description { get; set; }
}

我的目的是构建一个List<Fruit>,我可以使用以下代码实现:

List<Fruit> fruits = new List<Fruit>();
Fruit a = new Fruit();
a.FruitId = 1;
a.Description = "Apple";
fruits.Add(a);
Fruit b = new Fruit();
b.FruitId = 2;
b.Description = "Ananas";
fruits.Add(b);

我正在使用.net 4.0。 请告诉我,建立清单的不同方法有哪些?

4 个答案:

答案 0 :(得分:5)

使用Collection Initializer。它的可读性更高。

List<Fruit> fruits = new List<Fruit>
{
    new Fruit()
    {
        FruitId = 1,
        Description = "Apple"
    },
    new Fruit()
    {
        FruitId = 1,
        Description = "Ananas"

    }
};

对于您当前的代码,如果您以后不会在代码中使用对象ab,并且只使用它们来填充列表,那么使用集合初始化程序会更好

答案 1 :(得分:2)

您的代码可以使用Collection Initializer Syntax重写,如下所示:

var fruits = new List<Fruit> {
                                new Fruit { FruitId = 1, Description = "Apple"},
                                new Fruit { FruidId = 2, Description = "Ananas"}
                             };

另请注意使用var Keyword以避免重复。

答案 2 :(得分:2)

最干净的解决方案可能是为Fruit类编写构造函数:

public class Fruit {
    ...
    public Fruit(int id, string desc){
        this.FruitId = id;
        this.Description = desc;
    }
}

现在用它初始化列表:

List<Fruit> fruits = new List<Fruit> {
    new Fruit(1, "Apple"), new Fruit(2, "Ananas")
}

缺点是你必须编写构造函数(无论如何,好的做法,因为你的属性是公共的),并且好处是列表的初始化现在更加清晰,因为你不必写{{1 }}和FruitId一直都是!

答案 3 :(得分:0)

我会在集合中使用初始化程序:

List<Fruit> fruits = new List<Fruit>
{
     new Fruit(){ FruitId = 1, Description = "Apple" },
     new Fruit(){ FruitId = 2, Description = "Ananas" },                
};