我有一个课程如下:
public class ABC {
public IList<TextFillerDetail> TextFillerDetails
{ get { return _textfillerDetails; } }
private List<TextFiller> _textfillerDetails = new List<TextFiller>();
}
我实例化这个类并向它添加一些TextDetails:
var ans = new ABC();
ans.TextDetails.Add(new TextDetail());
ans.TextDetails.Add(new TextDetail());
ans.TextDetails.Add(new TextDetail());
ans.TextDetails.Add(new TextDetail());
有没有办法通过在类中添加一些代码(例如不同类型的构造函数)来一步完成。例如,通过传入一个数字5来请求添加五个元素?
var ans = new ABC(5);
答案 0 :(得分:3)
您可以将其添加为构造函数参数:
public class ABC()
{
public ABC(int count)
{
for (int i = 0; i < count; i++)
{
TextDetails.Add(new TextDetail());
}
}
// Stuff
}
答案 1 :(得分:2)
当然,您可以使用将初始化列表的构造函数:
public class ABC
{
public ABC(int count)
{
if (count < 1)
{
throw new ArgumentException("count must be a positive number", "count");
}
_textfillerDetails = Enumerable
.Range(1, count)
.Select(x => new TextDetail())
.ToList();
}
public IList<TextFillerDetail> TextFillerDetails { get { return _textfillerDetails; } }
private List<TextFiller> _textfillerDetails;
}
答案 2 :(得分:1)
不确定
public class ABC {
public IList<TextFillerDetail> TextFillerDetails
{ get { return _textfillerDetails; } }
public ABC(int capacity)
{
_textfillerDetails = new List<TextFiller>(capacity);
}
private List<TextFiller> _textfillerDetails;
}
答案 3 :(得分:0)
有几种方法:
使用初始化程序;它节省了一点点打字:
var ans = new ABC{
new TextDetail(),
new TextDetail(),
new TextDetail(),
new TextDetail(),
new TextDetail(),
}
更好的主意:使用Linq重复初始化lambda:
var ans = Enumerable.Repeat(0,5).Select(x=>new TextDetail()).ToList();
答案 4 :(得分:0)
您可以放入一个重载的构造函数,该构造函数将要添加的项目数作为参数添加。
但你为什么要这样做呢?您是否可以根据需要在列表中添加TextDetail
个对象?
答案 5 :(得分:0)
仅为此任务,是的,
private List<TextFiller> _textfillerDetails = new List<TextFiller>();
public ABC(int capacity)
{
for(int index = 0; index < capacity; index ++)
_textfillerDetails.Add(new TextDetail());
}
答案 6 :(得分:0)
您可以使用for循环或linq:
public class ABC
{
public IList<TextFillerDetail> TextFillerDetails { get; private set }
public ABC() : this(0)
{
}
public ABC(int count)
{
TextFIllerDetails = Enumerable.Range(0,count)
.Select(x => new TextFillerDetail())
.ToList();
}
}
答案 7 :(得分:0)
考虑使用,
IEnumerable或ICollection或IQueryable对象。
Ray Akkanson