繁体   English   中英

建立清单 <T> ,格式化问题

[英]Creating a List<T>, issues with formatting

我从下面的代码中得到各种编译错误。 当我具有如下所示的“列表”设置时,我不太确定如何向“列表”中添加项目。 我基本上不维护StockEntry类中设置的值,而将StockItem类用作Count。 使用... _stocks.Value.Count ++

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是一个通用类,因此您需要指定type参数:

_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,使其成为由构造函数中设置的readonly字段支持的readonly属性,并删除无参数构造函数。但是,我是不变性的迷。)同样,我将摆脱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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM