在C#中定义对象列表

时间:2014-12-12 16:58:03

标签: c#

我有一个C#控制台应用程序。我的应用程序有一个名为Item的类。项目定义如下:

public class Item {
  public int Id { get; set; }
  public string Name { get; set; }
  public string Description { get; set; }
}

我想建立一个List<Item> items;在我看来,C#有一种在运行时定义列表的简便方法。类似的东西:

List<Item> items = new List()
  .Add(new Item({ Id=1, Name="Ball", Description="Hello" })
  .Add(new Item({ Id=2, Name="Hat", Description="Test" });

现在我似乎无法找到像我提到的简短语法。我在做梦吗?或者是否有建立集合列表的简便方法?

谢谢!

3 个答案:

答案 0 :(得分:13)

您可以使用object & collection initializer(C#3.0及更高版本),如下所示:

List<Item> items = new List<Item>
{
   new Item { Id=1, Name="Ball", Description="Hello" },
   new Item { Id=2, Name="Hat", Description="Test" }
};

答案 1 :(得分:5)

它有。语法如下:

List<Item> items = new List<Item>()
{
    new Item{ Id=1, Name="Ball", Description="Hello" },
    new Item{ Id=2, Name="Hat", Description="Test" }
}

答案 2 :(得分:0)

在我看来,Amir popovich的回答是正确的,这应该是......

但是如果我们想要声明与您在问题中提到的相同的列表:

List<Item> items = new List()
  .Add(new Item({ Id=1, Name="Ball", Description="Hello" })
  .Add(new Item({ Id=2, Name="Hat", Description="Test" });

你可以写一个扩展方法,让你实现你想要的东西

检查此代码(小型控制台应用程序)

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<Item> items = new List<Item>()
            .AddAlso(new Item{ Id=1, Name="Ball", Description="Hello" })
            .AddAlso(new Item{ Id=2, Name="Hat", Description="Test" });

        foreach(var item in items)
            Console.WriteLine("Id {0} Name {1}, Description {2}",item.Id,item.Name,item.Description);
    }
}

public static class Extensions
{
    public static List<T> AddAlso<T>(this List<T> list,T item)
    {
        list.Add(item);
        return list;
    }
}

public class Item
{
    public int Id{get;set;}
    public string Name{get;set;}
    public string Description{get;set;}
}

这是一个有效的DEMO