Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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#_.net_C# 4.0 - Fatal编程技术网

C# 构建对象列表的不同方法

C# 构建对象列表的不同方法,c#,.net,c#-4.0,C#,.net,C# 4.0,我有一个叫做水果的课程,如下所示: public class Fruit { public int FruitId { get; set; } public string Description { get; set; } } 我的意图是构建一个列表,我可以使用以下代码实现该列表: List<Fruit> fruits = new List<Fruit>(); Fruit a = new Fruit(); a.FruitId = 1; a.Descrip

我有一个叫做水果的课程,如下所示:

public class Fruit
{
    public int FruitId { get; set; }
    public string Description { get; set; }
}
我的意图是构建一个列表,我可以使用以下代码实现该列表:

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);
我正在使用.NET4.0。 请让我知道,建立列表的不同方式是什么?

使用。在我看来,它更具可读性

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

    }
};

对于当前代码,如果以后不打算在代码中使用对象a和对象b,并且只使用它们来填充列表,则最好使用集合初始值设定项。

可以使用重写代码,如下所示:

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

还要注意使用以避免重复。

我将在集合上使用initilizer:

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

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

现在用它初始化列表:

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

缺点是你无论如何都必须编写构造函数,因为你的属性是公共的,优点是列表的初始化现在更加清晰了,因为你不必一直写fructid和Description

-1您的回答没有提供足够的信息。这只是一个链接。@HighCore不太喜欢向下投票并提供基本相同的竞争性答案。@HighCore添加代码并不是什么大问题,这就是Habib在几秒钟内所做的回答。@Andrey仍然只是一个链接的答案值得向下投票。@HighCore这当然取决于你,但我不同意。答案是关于主题的,有用且正确,但可能更好。我只会对误导性的或完全脱离主题的答案投反对票,官方的帮助也会同意我或我的观点:对帖子投反对票会发出相反的信号:该帖子包含错误的信息,研究不力,或者无法传达信息。是否要手动创建水果对象?或者,这可以在一个循环中完成吗?同样,如果你总是在实例化的时候知道结果和描述,那么你可以考虑把它们放在构造函数中作为参数。否则,您只是跨多行代码复制功能,除非您按照ledbutter的建议在循环中实例化。。。
List<Fruit> fruits = new List<Fruit> {
    new Fruit(1, "Apple"), new Fruit(2, "Ananas")
}