使用非空值初始化List <T>

Bil*_*ser 7 c# list

我正在寻找一种方法来初始化List类型的变量与一组值(在C#中).是的,有对象初始化但是需要为你想要的每个值一个新对象,我宁愿避免它.

这是一个示例:

class MyObject
{
  public string Name {get;set;}
}
List<MyObject> OldNames = new List<MyObject>(10);
List<MyObject> NewNames = new List<MyObject>(5);
Run Code Online (Sandbox Code Playgroud)

这很好,但是OldNames包含对MyObject类型对象的10个空引用.

使用列表初始化程序,我可以这样做:

List<MyObject> OldNames = new List<MyObject>{
  new MyObject(),
  new MyObject(),
  new MyObject(),
  etc.
Run Code Online (Sandbox Code Playgroud)

这有点痛苦,因为我有许多列表变量和各种大小来初始化(例如,一个变量是26个对象的列表.是的,我可以编写一个函数或者扩展来为我做这个初始化(在我循环的地方)提供大小)但是这个代码我不一定要写.

我希望有一些lamdba或LINQ表达式或者用于将对象列表初始化为值而不是null的东西.

谢谢!

Rot*_*tem 15

使用Enumerable.RangeLINQ方法指定迭代次数.

List<MyObject> NewNames = Enumerable.Range(1,5).Select(i => new MyObject()).ToList();
Run Code Online (Sandbox Code Playgroud)

1这里的数字是任意的,因为索引器没有以任何方式使用.

  • 请注意,这将使用相同的引用5次,这与原始代码不同. (6认同)
  • Enumerable.Repeat(5)好一点 (3认同)