创建列表<>,格式问题
本文关键字:格式 问题 列表 创建 | 更新日期: 2023-09-27 18:33:59
我从下面的代码中得到了各种各样的编译错误。 当我有一个列表设置时,我不太确定如何将项目添加到列表,如下所示。我不想基本上维护在 StockEntry 类中设置的值,而是使用类 StockItem 作为计数。 使用... _stocks。值.计数++
public class StockEntry
{
public string Name;
public PeriodType Period;
public int Min;
public StockEntry(string Name, PeriodType Period, int Min)
{
this.Name = Name;
this.Period = Period;
this.Min = Min;
}
}
public class StockItem<T>
{
public T Value;
public StockItem() {}
public StockItem(T val) {Value = val;}
}
List<StockItem<StockEntry>> _stocks = new List<StockItem<StockEntry>>();
protected override void Initialize()
{
_stocks.Add(new StockItem(StockEntry("ABC", PeriodType.Minute, 5)));
_stocks.Add(new StockItem(StockEntry("ACE", PeriodType.Minute, 5)));
_stocks.Add(new StockItem(StockEntry("ACN", PeriodType.Minute, 5)));
}
除此之外,这可能是问题所在:
_stocks.Add(new StockItem(StockEntry("ABC", PeriodType.Minute, 5)));
(和类似的行)。
StockItem
是一个泛型类,因此您需要指定类型参数:
_stocks.Add(new StockItem<StockEntry>(StockEntry("ABC", PeriodType.Minute, 5)));
如果要避免这种冗余的规范,可以在非泛型类型中创建静态泛型方法:
// Overload StockItem<T> by generic arity
public static class StockItem
{
public static StockItem<T> Of(T item)
{
return new StockItem<T>(item);
}
}
然后:
_stocks.Add(StockItem.Of(StockEntry("ABC", PeriodType.Minute, 5)));
也就是说,目前还不清楚为什么StockItem
首先需要通用。而且我绝对会避免使用公共字段 - 至少使其成为自动实现的属性。(理想情况下,IMO,使其成为由构造函数中设置的只读字段支持的只读属性,并删除无参数构造函数。但是我就是不变性的粉丝。同样,我会摆脱StockEntry
的公共领域.
我认为如果您将new
关键字添加到此行:
_stocks.Add(new StockItem(StockEntry("ABC", PeriodType.Minute, 5)));
您的问题将得到解决。
_stocks.Add(new StockItem(new StockEntry("ABC", PeriodType.Minute, 5)));
_stocks 和 Initialize 需要成为类的一部分 - 它们目前不是。
大概您希望它们作为 StockItem 的一部分:
public class StockItem<T>
{
public T Value;
public StockItem() {}
public StockItem(T val) {Value = val;}
} // The class StockItem ends with this bracket