如何实现多种类型的数据成员的迭代?
这是我必须实施的界面
=========================================================================
HDL Synthesis Report
Macro Statistics
# Multipliers : 1
9x9-bit multiplier : 1
# Registers : 3
18-bit register : 1
9-bit register : 2
=========================================================================
我的自定义对象的类,其中包含DateTime并且在其中加倍
interface ISeries : IReadOnlyList<Tuple<DateTime, double>>
{
IEnumerable<DateTime> Time { get; }
IEnumerable<double> Values { get; }
}
由TimeEvents制作的自定义系列的类
class TimeEvent
{
public DateTime Time;
public double Value;
public TimeEvent(DateTime time, double value)
{
Time = time;
Value = value;
}
}
这里基本上是我试图用它。所以我可以迭代TimeSeries中的trought项目。很像字典。
class TimeSeries : ISeries
{
List<TimeEvent> TimeEvents;
public TimeSeries(List<TimeEvent> timeEvents)
{
TimeEvents = timeEvents;
}
public Tuple<DateTime, double> this[int index]
{
get
{
return new Tuple<DateTime, double>(TimeEvents[index].Time, TimeEvents[index].Value);
}
}
public int Count
{
get
{
return TimeEvents.Count;
}
}
public IEnumerable<DateTime> Time
{
get
{
throw new NotImplementedException();
}
}
public IEnumerable<double> Values
{
get
{
throw new NotImplementedException();
}
}
public IEnumerator<Tuple<DateTime, double>> GetEnumerator()
{
return GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return TimeEvents.GetEnumerator();
}
}
答案 0 :(得分:2)
...
List<TimeEvent> TimeEvents;
public TimeSeries(List<TimeEvent> timeEvents)
{
TimeEvents = timeEvents;
}
public IEnumerable<DateTime> Time
{
get
{
foreach (var item in TimeEvents)
{
yield return item.Time;
}
}
}
public IEnumerable<double> Values
{
get
{
foreach (var item in TimeEvents)
{
yield return item.Value;
}
}
}
答案 1 :(得分:1)
对你有用的东西会更简单吗?
List<Tuple<DateTime, double>> list = new List<Tuple<DateTime, double>>();
list.Add(Tuple.Create(new DateTime(2017, 1, 1), 64d));
list.Add(Tuple.Create(new DateTime(2017, 2, 3), 128d));
list.Add(Tuple.Create(new DateTime(2017, 3, 6), 256d));
foreach (Tuple<DateTime, double> tuple in list)
{
Console.WriteLine("DateTime={0:yyyy/dd/mm}, Double={1}", tuple.Item1, tuple.Item2);
}
似乎working。