【发布时间】:2018-10-05 15:02:51
【问题描述】:
我有一个具有仅获取集合属性的类。我想用现有集合中的值初始化集合。
我知道可以初始化集合using a collection initializer。我还可以创建对象,然后在集合上使用AddRange 来添加现有集合的项目。但是,这将创建具有空列表的对象,然后添加现有项目。
有没有一种方法可以首先正确初始化 List 来创建对象(当然不添加构造函数)?
using System.Collections.Generic;
namespace EmptyConsoleApp
{
internal class Program
{
public static void Main(string[] args)
{
// Compiles, but is not what I need
var firstHolder = new Holder()
{
TheList = {"A", "B"}
};
// Compiles, but initializes the list after object creation
var existingList = new List<string>() {"Foo", "Bar"};
var secondHolder = new Holder();
secondHolder.TheList.AddRange(existingList);
// Does not compile
var thirdHolder = new Holder()
{
TheList = {existingList}
};
}
}
internal class Holder
{
public Holder()
{
TheList = new List<string>();
}
public List<string> TheList { get; }
}
}
【问题讨论】:
-
嗯,它是一个只读属性。为什么你期望你可以在不使用构造函数的情况下从外部初始化它?这正是构造函数存在的原因
标签: c#