我有一个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" });
现在我似乎无法找到像我提到的简短语法。我在做梦吗?或者是否有建立集合列表的简便方法?
谢谢!
答案 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